[英]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.