lambda演算中的迭代函数

时间:2011-04-25 13:43:43

标签: lambda-calculus

我有这样的功能

iter :: Int -> (a -> a) -> a -> a    
iter n f a = f (f ... (f a) .. )

如何在未键入的lambda演算中定义这样的函数?

任何提示/帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

纯lambda演算中的数字本身不存在。你必须为数字设计一个表示(并显示那些行为就像数字一样)。基本思想是你可以定义数字,使它们完全你需要的迭代函数:n将是一个lambda术语,当给定函数f时,计算n的{​​{1}}次迭代。

这是一个名为Church Encoding的想法。

答案 1 :(得分:0)

iter == (rec g (fn f (fn n (fn x ((= n 0) x (g f (- n 1) (f x)))))))