可以这样写:
head $ foldr (:) [] [1..]
-- 1
但是,当我尝试处理元组时,它会进入无限循环:
head . fst $ foldr (\ x (ls, _) -> (x : ls, 0)) ([], 0) [1..]
我需要这个的原因是因为我想在内部函数中传递产生的元素的数量。像那样:
foldr go ([], 0) [1..]
go num (ls, cnt) = -- use cnt to get l and produce new pair (l : ls, cnt + 1)
默认情况下,模式匹配是严格的。那是,
(\(x,y) -> (1:x,y)) _|_ = _|_
不过,您可以使用模式使用惰性模式匹配~
:
(\ ~(x,y) -> (1:x,y)) _|_ = (1:_|_, _|_)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句