想象无止境啊。http://www.youtube.com/watch?v=NZNTgglPbUA 阅读全文>
发表于 @ 2006年10月09日 09:59:00|评论(loading...)|编辑
上次说到丘齐数 的时候并没有提到怎么定义后继函数, succ(n) = n + 1。这两天读Pierced的书(顺便说一句,这本Types and Programming Languages的叙述清晰,推理自然,符号也用得非常简约。相比那本Principles of Program Analysis,Peirce这本书读起来轻松多了。也不知道是作者风格问题,还是类型系统的线条本来就比较清爽)时,突然意识到succ的定义其实暗合(多半是明合,不过我没有清晰的证明)交互递归。先看上次定义的丘齐数:
n = lambda s z . sn z
如果把s看成后继函数,z看成0,n就很好理解了:对0做n次后继操作。
现在看后继函数的定义:succ = lambda n s z. s (n s z)
看到没有,如果我们同样把s看作后继函数,z看成0, 那succ(n)相当于对0做n次后继操作,然后再做一次。相当于说说succ(n) = n + 1。非常直观吧?再仔细观察,丘齐数的定义出现在后继函数的定义里,反之亦然。换句话说,俺们用到了交互递归。如果有老大不了解交互递归,阅读全文>
发表于 @ 2006年10月02日 14:46:00|评论(loading...)|编辑