在Haskell中,反斜杠空格的含义是什么?

3
我知道像\x->x+1这样的表达式是一个匿名函数定义,它获取一个x并将其加1。但在阅读这里的文章时,我看到了表达式return x = (\ r -> x)
那么(\ r -> x)是什么意思?为什么反斜杠后面是空的?

10
因为通常可以在两个标记之间插入任意多的空格。反斜杠是一个标记,x是另一个标记。 - Ingo
Haskell的核心基于Lambda演算。这就是为什么匿名函数是可能的原因。基本上,这是通过Beta-还原在\r -> x中实现的,其中r是形式参数。这里'r'没有被绑定。然而,在inc.函数\x -> + x 1中,x是被绑定的,这意味着x的值被传递到变量'x',并且经过Delta还原后进行了递增。 - Dimitar
1个回答

6
没有区别: \r -> x \r-> x 具有相同的意义,就像 1 + 1 1+1 具有相同的含义一样。在\之后的空格是无关紧要的。
因此, return x 只是 \ r -> x ,这是一个函数,它接受一个参数 r ,忽略它,并产生x
此外,由于r被忽略了,我们倾向于写成\_ -> x(或 const x - 定义为 const x _ = x )。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接