我目前正在学习Haskell,并且还参加了一个关于大学函数式编程的理论性讲座。我知道这是纯粹的理论/学术问题,但我感兴趣的是如何简单地用纯lambda演算(即没有定义任何常量)来表达不同的简单函数。Pure Lambda微积分 - 和函数
我的一些演讲材料定义布尔值,例如:
真 = \ xy.x
假 = \ xy.y
(\表示lambda符号)
如果它们像这些选择器函数一样定义,那么if-con dition可以很容易地定义为:
如果 = \ x.x中
现在,我试图想出一些简写形式逻辑“和” - 函数。我的第一猜测是:
和 = \ XY {(如果 x)的[(如果 Y)真假] 假}
所以基本上这个lambda函数会接收2个参数uv,其中必须输入True/False。如果我用逻辑表的所有4个组合进行各种β减少,我会得到正确的结果。
尽管如此,这个功能看起来有点难看,我正在考虑让它更加优雅。这里有什么建议?
也许相关:http://stackoverflow.com/questions/2398503/query-on-booleans-in-lambda-calculus –
@ A.E ++,尤指。特殊的答案http://stackoverflow.com/questions/2398503/query-on-booleans-in-lambda-calculus/2399127#2399127那里。 –