Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何在元组上使用Data.List.iterate_Loops_Haskell_Tuples - Fatal编程技术网

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

Loops 如何在元组上使用Data.List.iterate,loops,haskell,tuples,Loops,Haskell,Tuples,表达式iterate(1+1的计算结果为[1,2,3,…] 我可以做一些类似于迭代((1+)(1+)(1,1)的事情,这样我就可以得到[(1,1),(2,2),…]?如果是,语法是什么?此语法应该可以正常工作: iterate (\(x,y) -> (x+1, y+1)) (1, 1) 还有许多其他方法可以剥这只猫的皮: iterate (bimap (1+) (1+)) (1, 1) iterate ((1+) *** (1+)) (1, 1) map (\x -> (x,x))

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


我可以做一些类似于迭代((1+)(1+)(1,1)的事情,这样我就可以得到
[(1,1),(2,2),…]
?如果是,语法是什么?

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

iterate (\(x,y) -> (x+1, y+1)) (1, 1)
还有许多其他方法可以剥这只猫的皮:

iterate (bimap (1+) (1+)) (1, 1)
iterate ((1+) *** (1+)) (1, 1)
map (\x -> (x,x)) $ iterate (1+) 1
join (,) <$> iterate (1+) 1
[(x, x) | x <- [1..]]
迭代(bimap(1+)(1+)(1,1)
迭代((1+)***(1+)(1,1)
映射(\x->(x,x))$iterate(1+)1
连接(,)迭代(1+)1

[(x,x)|x这种语法应该可以很好地工作:

iterate (\(x,y) -> (x+1, y+1)) (1, 1)
还有许多其他方法可以剥这只猫的皮:

iterate (bimap (1+) (1+)) (1, 1)
iterate ((1+) *** (1+)) (1, 1)
map (\x -> (x,x)) $ iterate (1+) 1
join (,) <$> iterate (1+) 1
[(x, x) | x <- [1..]]
迭代(bimap(1+)(1+)(1,1)
迭代((1+)***(1+)(1,1)
映射(\x->(x,x))$iterate(1+)1
连接(,)迭代(1+)1

[(x,x)| x扩展Daniel Wagner的答案--
Data.List
iterate
将函数作为第一个参数。
iterate
的类型签名为

(a -> a) -> a -> [a]
这意味着第一个参数中的函数只需返回其接收的相同类型。这可以是匿名函数,如Daniel的回答所示,也可以是函数名。例如,他的示例可以使用如下命名函数重写:

import Data.List (iterate)

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

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

(a -> a) -> a -> [a]
这意味着第一个参数中的函数只需返回其接收的相同类型。这可以是匿名函数,如Daniel的回答所示,也可以是函数名。例如,他的示例可以使用如下命名函数重写:

import Data.List (iterate)

addOne (x, y) = (x + 1, y + 1)
iterate addOne (1, 1)
谢谢:)那正是我要找的。谢谢:)那正是我要找的