haskell constructor infix-notation

¿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))