次のデータ型を読んでいます:
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)
2 番目のメンバー宣言の:..とは何ですか?
次のデータ型を読んでいます:
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)
2 番目のメンバー宣言の:..とは何ですか?
コンストラクターの名前は、大文字で始まる英数字またはコロンで始まる記号のいずれかです。後者の場合、演算子は中置関数と同様に中置で使用されます。
型の引数(左オペランド) と型の 1 つ(右オペランド) を取る、型の中置:..
コンストラクターも同様です。Ne
Ne
Clos Term
:..
代数データ型のコンストラクタの 1 つですNe
。句読点で始まり、で始まるコンストラクタ名:
は、中置演算子になります。これを試して:
module Main where
data List a = Nil
| a :.. (List a)
deriving Show
main = print (1 :.. (2 :.. Nil))