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

文档页面示例中的 Let 关键字是什么意思?(我知道let的正常含义)

4

2 回答 2

6

这不是关键字。它只是该Exp类型的第一个构造函数的名称。Exp1第二行的第一个是第二个构造函数的名称。

于 2012-09-07T20:20:20.917 回答
1

在这种情况下Let是一个数据构造函数,不应与let关键字混淆。
在示例中,语法接受let类似于 Haskell 使用的表达式。
即字符串let foo = 5 in foo + foo稍后将表示为:
Let "foo" (Term (Factor (Int 5))) (Plus (Term (Factor (Var "foo"))) (Factor (Var "foo")))

如您所见,构造函数的第一个参数是 substition,第二个参数是 substition 适用的表达式。

于 2012-09-07T20:34:31.623 回答