| m>n = iter m predList n
| otherwise = [()]
丘奇数的减法实现如下所示:
minus :: Church -> Church -> Church
minus m n
| m>n = runChurch n predChurch m
| otherwise = Church $ const id
自然数的整除就是通过减法来实现的,具体如下所示:
divide :: N -> N -> N
m `divide` n | m == 0 && n == 0 = undefined
m `divide` n | m < n = 0
m `divide` n | otherwise = S ((m `minus` n) `divide` n)
至此,我们从最开始的一无所知的状态一步一步的定义了什么是自然数,然后定义了其上的加、减、乘、整除和幂运算这些基本操作,证明了1 + 1 = 2 这个命题。我们还介绍了自然数的其他两种同构形式的自然数定义,即列表表示的自然数和丘奇数。
参考链接:
1.《同构--编程中的数学》 /liuxinyu95/u...
数学联邦政治世界观提示您:看后求收藏(同人小说网http://tongren.me),接着再看更方便。