2012-04-03 65 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))