这是什么意思?来自Haskell维基

这是什么意思?来自Haskell维基,haskell,Haskell,示例中的Let关键字是什么意思?(我知道let的正常含义)它不是一个关键词。它只是给Exp类型的第一个构造函数起的名字。第二行的第一个Exp1是第二个构造函数的名称。它不是关键字。它只是给Exp类型的第一个构造函数起的名字。第二行的第一个Exp1是第二个构造函数的名称。在本例中,Let是一个数据构造函数,不应与Let关键字混淆。 在本例中,语法接受Haskell使用的let表达式。 也就是说,foo+foo中的字符串let foo=5稍后将表示为: 让“foo”(术语(因子(Int 5)))(加

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

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

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

在本例中,
Let
是一个数据构造函数,不应与
Let
关键字混淆。
在本例中,语法接受Haskell使用的
let
表达式。
也就是说,foo+foo中的字符串
let foo=5稍后将表示为:
让“foo”(术语(因子(Int 5)))(加上术语(因子(Var“foo”)))(因子(Var“foo”)))


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

在本例中,
Let
是一个数据构造函数,不应与
Let
关键字混淆。
在本例中,语法接受Haskell使用的
let
表达式。
也就是说,foo+foo
中的字符串
let foo=5稍后将表示为:
让“foo”(术语(因子(Int 5)))(加上术语(因子(Var“foo”)))(因子(Var“foo”)))


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

因此,使用此数据类型,我实际上会编写“Let”a_string“Exp Exp Exp Exp Exp?是的,要创建类型为
Exp
的值,您可以编写
Let”string“someExp someOtherExp
Exp1 someExp1
。这里的名称
Let
没有什么特别之处-它的作用与任何其他构造函数一样。作为完整的Haskell表达式:
Let x=Let“var”someExp otherExp in show x
。或者甚至作为递归数据结构:
let x=let“var”x x in show x
。因此,使用此数据类型,我实际上会编写“let”a_string“Exp Exp Exp?是的,要创建
Exp
类型的值,您可以编写
let”string“someExp someOtherExp
Exp1 someExp1
。这里的名称
Let
没有什么特别之处-它的作用与任何其他构造函数一样。作为完整的Haskell表达式:
Let x=Let“var”someExp otherExp in show x
。甚至作为递归数据结构:
let x=let“var”x x在show x中是数据构造函数,而不是类型构造函数。
let
是数据构造函数,而不是类型构造函数。
data Exp  
  = Let String Exp Exp
  | Exp1 Exp1
  deriving Show