Haskell如何制作结果列表

时间:2017-07-15 18:04:41

标签: haskell

我正在努力解决我的作业,但不知道如何。请帮助我

  

编写一个方法,从函数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]

2 个答案:

答案 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))