19

次のデータ型を読んでいます:

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 番目のメンバー宣言の:..とは何ですか?

4

2 に答える 2

20

コンストラクターの名前は、大文字で始まる英数字またはコロンで始まる記号のいずれかです。後者の場合、演算子は中置関数と同様に中置で使用されます。

型の引数(左オペランド) と型の 1 つ(右オペランド) を取る、型の中置:..コンストラクターも同様です。NeNeClos Term

于 2012-04-03T15:45:46.970 に答える
12

:..代数データ型のコンストラクタの 1 つですNe。句読点で始まり、で始まるコンストラクタ名:は、中置演算子になります。これを試して:

module Main where

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

main = print (1 :.. (2 :.. Nil))
于 2012-04-03T15:46:27.470 に答える