1

私はこのような機能を持っています

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

型指定されていないラムダ計算でそのような関数を定義するにはどうすればよいですか?

ヒント/ヘルプをいただければ幸いです。

4

2 に答える 2

1

純粋なラムダ計算では、数値自体は存在しません。数値の表現を設計する必要があります (実際にそれらが数値のように振る舞うことを示します)。基本的な考え方は、必要な反復関数になるように数値を定義できるということです。これは、関数が与えられたときにの反復を計算するラムダ項になりますnfnf

これはChurch Encodingとして知られる考え方です。

于 2011-04-26T05:57:45.110 に答える
0
iter == (rec g (fn f (fn n (fn x ((= n 0) x (g f (- n 1) (f x))))))) 
于 2013-10-04T11:42:30.287 に答える