¿Qué significa '':..'' en Haskell?
constructor infix-notation (2)
El nombre de un constructor puede ser alfanumérico comenzando con una letra mayúscula o simbólico comenzando con dos puntos. En este último caso, el operador se utilizará infijo al igual que las funciones infijo.
Entonces :.. es un constructor de infijo para el tipo Ne , que toma un argumento de tipo Ne (operando izquierdo) y uno de tipo Clos Term (operando derecho).
Estoy leyendo un tipo de datos siguiente:
data Ne
= NVar Id
| Ne :.. (Clos Term)
| NSplit Ne (Bind (Bind (Clos Term)))
| NCase Ne (Clos [(Label, Term)])
| NForce Ne
| NUnfold Ne (Bind (Clos Term))
deriving (Show, Eq)
¿Qué es : .. en la segunda declaración de miembro?
:.. es uno de los constructores para el tipo de datos algebraico Ne . Un nombre de constructor que consiste en puntuación y que comienza con : convierte en un operador de infijo. Prueba esto:
module Main where
data List a = Nil
| a :.. (List a)
deriving Show
main = print (1 :.. (2 :.. Nil))