2012-04-03 80 views
19

我读以下数据类型:Haskell中的':'是什么意思?

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) 

什么是:..在第二个成员声明?

回答

20

构造函数的名称可以是以大写字母开头的字母数字或以冒号开头的符号。在后一种情况下,操作员将像中缀函数一样使用中缀。

所以:..是用于Ne型,这需要Ne型(左操作数)和Clos Term类型(右操作数)中的一个的参数中缀的构造。

12

:..是用于代数数据类型Ne的构造函数之一。由标点组成的构造函数名称以:开头,成为中缀运算符。试试这个:

module Main where 

data List a = Nil 
      | a :.. (List a) 
      deriving Show 

main = print (1 :.. (2 :.. Nil))