1
data Exp  
  = Let String Exp Exp
  | Exp1 Exp1
  deriving Show

ドキュメント ページの例の Let キーワードは何を意味しますか? (let の通常の意味は知っています)

4

2 に答える 2

6

キーワードではありません。これは単に、型の最初のコンストラクターに付けられた名前Expです。2 行目の最初Exp1は、2 番目のコンストラクターの名前です。

于 2012-09-07T20:20:20.917 に答える
1

この場合はデータ コンストラクターであり、キーワードLetと混同しないでください。 この例では、文法はHaskell で使用されるような式を受け入れます。 つまり、文字列は後で次のように表されます。let
let
let foo = 5 in foo + foo
Let "foo" (Term (Factor (Int 5))) (Plus (Term (Factor (Var "foo"))) (Factor (Var "foo")))

ご覧のとおり、コンストラクターの最初の引数は置換で、2 番目の引数は置換が適用される式です。

于 2012-09-07T20:34:31.623 に答える