data Exp
= Let String Exp Exp
| Exp1 Exp1
deriving Show
documentation page示例中的Let关键字是什么意思? (我知道let的正常含义)
答案 0 :(得分:6)
这不是关键字。它只是给Exp
类型的第一个构造函数的名称。第二行的第一个Exp1
是第二个构造函数的名称。
答案 1 :(得分:1)
在这种情况下,Let
是数据构造函数,不应与let
关键字混淆。
在示例中,语法接受像Haskell使用的let
表达式
即字符串let foo = 5 in foo + foo
稍后将表示为:
Let "foo" (Term (Factor (Int 5))) (Plus (Term (Factor (Var "foo"))) (Factor (Var "foo")))
正如您所看到的,构造函数的第一个参数是substition,第二个参数是substition应用的表达式。