5
我想要有一个循环遍历某些模式的函数的无限列表。例如:[(+), (-), (+), (-), ...]
如何在Haskell中重复函数列表
如果我这样做
fmap repeat [(+), (-)]
然后我得到的嵌套列表[[a -> a -> a]]
。按照这样的模式获得单个无限功能列表的最佳方式是什么?
我想要有一个循环遍历某些模式的函数的无限列表。例如:[(+), (-), (+), (-), ...]
如何在Haskell中重复函数列表
如果我这样做
fmap repeat [(+), (-)]
然后我得到的嵌套列表[[a -> a -> a]]
。按照这样的模式获得单个无限功能列表的最佳方式是什么?
你所寻找的是cycle :: [a] -> [a]
:
cycle [(+),(-)]
类型此表达的是:
Prelude> :t cycle [(+),(-)]
cycle [(+),(-)] :: Num a => [a -> a -> a]
cycle
接受一个列表[a]
和生产,在那里重复给定的列表上,并列表再次。所以cycle [1,2,3]
产生[1,2,3,1,2,3,1,2,3,1,...]
你可以使用'concat(repeat [(+),( - )])'。不要'fmap repeat',这会让你得到多个无限列表,你必须合并。 – Bergi
谢谢。我想我可以重复列表中的内容来避免嵌套,但我意识到为什么这样做不起作用。 – northlane