我正在努力解决我的作业,但不知道如何。请帮助我
编写一个方法,从函数f生成以下列表 和起始值x:[x,f ^ 1(x),f ^ 2(x),f ^ 3(x)...] f ^ n(x) 是f到x的n次应用。
是函数的类型吗?
gen :: (a->a)->a->Int->[a]
gen f x 0 = [x]
答案 0 :(得分:1)
我认为iterate
就足够了,它有签名iterate :: (a -> a) -> a -> [a]
:
例如,iterate (*2) 1
为您提供了2 [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288, ...]
或者您可以执行以下操作:
gen f x = x : gen f (f x)
答案 1 :(得分:0)
我试图使用你的建议 所以我得到了这个
gen :: (a->a)->a->Int->[a]
gen f x 0 = [x]
gen f x n = x : take (n-1) ( gen f (f x) (n-1))