data Exp
= Let String Exp Exp
| Exp1 Exp1
deriving Show
ドキュメント ページの例の Let キーワードは何を意味しますか? (let の通常の意味は知っています)
data Exp
= Let String Exp Exp
| Exp1 Exp1
deriving Show
ドキュメント ページの例の Let キーワードは何を意味しますか? (let の通常の意味は知っています)
キーワードではありません。これは単に、型の最初のコンストラクターに付けられた名前Exp
です。2 行目の最初Exp1
は、2 番目のコンストラクターの名前です。
この場合はデータ コンストラクターであり、キーワード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 番目の引数は置換が適用される式です。