Lambda演算是Haskell中的偶然函数

问题描述 投票:-1回答:1

所以我在Haskell中学习lambda演算,我正在尝试实现一个isEven函数,如果它是偶数则返回true,否则返回false。我知道0是偶数,然后1是奇数,然后每个交替数是前一个的替代,即如果一个是奇数,那么2是偶数,那么3是奇数。我可以使用isEven函数检查输入是否为0,如果不是,那么以某种方式检查它的后继是偶数还是奇数?

haskell lambda-calculus
1个回答
2
投票

我假设通过“lambda演算”你的意思是我们正在使用一些教会编码的数字+布尔值,而“Haskell”部分主要是你的问题附带的。

isEven = \n -> n flip True
flip = \x y z -> x z y
True = \x y -> x
False = \x y -> y

这与您表达的方式略有不同。

回想教会数字n意味着n迭代函数应用程序。 flip重复了偶数#次是id,因此n flip == id甚至nn flip == flip为奇怪的n。此外,flip True == Falseflip False == True。因此,构造正确地编码奇偶校验。

© www.soinside.com 2019 - 2024. All rights reserved.