我有这样的功能
iter :: Int -> (a -> a) -> a -> a
iter n f a = f (f ... (f a) .. )
如何在未键入的lambda演算中定义这样的函数?
任何提示/帮助将不胜感激。
答案 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)))))))