如何在元组上使用Data.List.iterate

时间:2016-04-15 23:26:22

标签: loops haskell tuples

表达式iterate (1+) 1的计算结果为[1, 2, 3, ...]

我可以执行iterate ((1+) (1+)) (1, 1)之类的操作,以便获得[(1, 1), (2, 2), ... ]吗?如果是,语法是什么?

2 个答案:

答案 0 :(得分:4)

此语法应该可以正常工作:

currentTime

还有很多其他方法可以让这只猫受到伤害:

iterate (\(x,y) -> (x+1, y+1)) (1, 1)

......还有更多。

答案 1 :(得分:0)

扩展Daniel Wagner的回答 - Data.List' s iterate将函数作为第一个参数。 iterate的类型签名是

(a -> a) -> a -> [a]

意味着第一个参数中的函数只需返回与摄取相同的类型。这可以是匿名函数,如Daniel的答案或函数名称所示。例如;他的例子可以使用像这样的命名函数重写:

import Data.List (iterate)

addOne (x, y) = (x + 1, y + 1)
iterate addOne (1, 1)