[英]How to implement an infinite list of functions in Haskell
我正在使用Fibonacci函数g的版本,其中:
g :: Integer -> Integer -> Integer
g i n | i==0 = 0
| i==1 = n
| i>1 = (n*( (g (i-1) n) + (g (i-2) n) ))
...这样gin是gi(n)的值,部分定义gi是gi
我现在想定义一个无限的函数列表: gs :: [ Integer -> Integer ]
,这样(gs !! i) is gi
。
我要5美元[ g 3 | g <- gs]
[ g 3 | g <- gs]
[0,3,9,36,135]
给我[0,3,9,36,135]
。
谁能帮我定义这个无限列表?
您可以使用[0 ..]
获取所有从0开始的数字列表。 一旦有了,只需将g
应用于每个对象即可。
您可以像在示例用法中那样使用列表理解来做到这一点:
gs = [g i | i <- [0 ..]]
或使用地图:
gs = map g [0 ..]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.