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