如何重复haskell中的函数列表

nor*_*ane 5 haskell functional-programming

我希望有一个循环通过某种模式的无限函数列表.例如:[(+), (-), (+), (-), ...]

如果我做的事情

fmap repeat [(+), (-)]
Run Code Online (Sandbox Code Playgroud)

然后我得到嵌套列表[[a -> a -> a]].在这样的模式之后获得单个无限函数列表的最佳方法是什么?

Wil*_*sem 13

你在寻找的是cycle :: [a] -> [a]:

cycle [(+),(-)]
Run Code Online (Sandbox Code Playgroud)

这个表达式的类型是:

Prelude> :t cycle [(+),(-)]
cycle [(+),(-)] :: Num a => [a -> a -> a]
Run Code Online (Sandbox Code Playgroud)

cycle获取一个列表[a]并生成一个列表,其中给定的列表一遍又一遍地重复.所以cycle [1,2,3]生产[1,2,3,1,2,3,1,2,3,1,...]