我一直在阅读编程语言的实用基础,并发现迭代和同时归纳定义很有趣.我能够非常轻松地编码我在网上找到的偶数和奇数函数的相互递归版本.
let rec even = function | 0 -> true | n -> odd(n-1) and odd = function | 0 -> false | n -> even(n-1) printfn "%i is even? %b" 2 (even 2) printfn "%i is odd? %b" 2 (odd 2)
但是我不太清楚(我是F#newb),如果我可以在类型级别而不是通过函数执行此操作.我已经在F#中看到了Peano数字的实现,所以我觉得这应该是可能的.