[英]Haskell: Let statement using previous declared variable in function declaration
说我有功能
foo n = foo' 1 where
foo' n = foo' 1
foo' x = x : foo' (x + 1)
例如,假设n = 5是否可以使foo'n的含义为foo'5? 因此它将循环。
我猜您要的是这样的:
foo n = foo' 1
where
foo' x | x == n = foo' 1
foo' x = x : foo' (x + 1)
| x == n
| x == n
part是模式匹配保护条件。
似乎有一种使用Data.List中的函数来完成此操作的简单方法
:m + Data.List
让mkList计数=(连续。复制计数)[1..to]
清单5 9
[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5 ,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
mkList 1 10
[1,1,1,1,1,1,1,1,1,1,1]
让mkList进行计数=进行计数$ cycle [1..to]
乘车和骑自行车会更便宜,因为您不必回头去整理清单。
或者你也可以使用迭代
((take 10 $ iterate (+1) 0) == [0..9]) == True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.