0

iterate結果が次のようになるように関数を変更するにはどうすればよいですか

f x, (f^2)x, (f^4)x, (f^8)x, ...

誰かが私に何か提案をしてくれたらとても嬉しいです。

4

2 に答える 2

4

与えられて、それは私が言うだろうに適用されるx倍をf^x意味しますfx

iterate :: (a -> a) -> a -> [a]
iterate f x = f x : iterate (f . f) x

十分でしょう。

于 2012-06-11T18:25:36.673 に答える
2

別:

Prelude> map snd $ iterate (\(f,x) -> (f.f, f x)) ((+1),1)
[1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,...
于 2012-06-11T20:10:02.400 に答える