我刚开始学习Haskell,我试图在Haskell中使用lambda演算。我发现这个表达式将教堂的数字转换成数字,但我似乎无法弄清楚这个表达式中的0是什么意思。我找不到它:这个haskell表达式意味着什么
zero = (\f -> \x -> x)
one = (\f -> \x -> f x)
two = (\f -> \x -> f (f x))
getNum church = church (\x-> (x + 1)) 0
这是最后一个让我困惑的零。这是lambda表达式的基本情况还是一些参数?
教堂号码是接受两个参数的函数,而'church'变量就是这样一个数字。所以它被称为两个参数,一个是lambda表达式,另一个是0. –
好的,谢谢!但是表达式(\ x->(x + 1))只有1个参数,所以当0被替换时,它变成0 + 1。但是它是如何工作5个左右的?我还是不太明白。教会是Haskell语言中预定义的东西吗? –
也许你可以通过'getNum zero'求值,然后'getNum one',然后'getNum two'# –