2012-04-10 42 views
24

que tienen la siguiente definición de clase Scala (que se encuentra en un papel), las categorías de modelado:Scala ~> (tilde mayor que)

trait Category[~>[_, _]] { 
    def compose[A, B, C] 
    (f: B ~> C) 
    (g: A ~> B) 
    : A ~> C 
    def id[A]: A ~> A 
} 

alguien me puede explicar lo que el '~>' significa en la categoría tipo de parámetro, y en los métodos return type? O me directo a un recurso que lo explica ... Soy nuevo en Scala (procedente de Java), así que perdónenme si eso es algo que un usuario Scala debería haber sabido ... gracias de antemano

Respuesta

26

~> es solo el marcador de posición para el parámetro de tipo Category. Como el T en class Option[T].

Además, la sintaxis de Scala le permite escribir B ~> C como una abreviatura de ~>[B, C].

Tal vez las cosas se ponen más clara, si cambia el nombre es:

trait Category[Mapping[_, _]] { 
    def compose[A, B, C](f: Mapping[B, C])(g: Mapping[A, B]): Mapping[A, C] 
    def id[A]: Mapping[A, A] 
} 
+0

Ahora es más claro ... Creo que voy a acostumbrarme a la libertad de usar carbón raro para nombrar las cosas (a diferencia de Java). De hecho, pensé que '~>' significaba algo especial, pero puede ser reemplazado por cualquier cosa, ya que entiendo esto correctamente ... ¡Muchísimas gracias! – Andrea

+0

Sí, es completamente arbitrario (dentro de las reglas de nomenclatura de Scala para los identificadores, por supuesto). – Debilski

+8

Por cierto: la razón por la que se eligió un "operador", es decir, caracteres de operador en lugar de caracteres de letras, era la esperanza de que en el dominio de la teoría de categorías se traduce fácilmente el concepto de "morfismo" (también conocido como "mapeo"). , "flecha", etc.). Por lo general, debes tener cuidado con los operadores. –

Cuestiones relacionadas