这是什么意思?来自Haskell wiki

时间:2012-09-07 20:15:17

标签: haskell

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

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

2 个答案:

答案 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应用的表达式。