如何在haskell中获取列表并生成两个列表作为输出?
例如,我正在处理的一个问题要求创建一个程序,该程序需要一个 谓词和一个列表,并返回两个列表的列表,第一个 输入列表中那些通过谓词的元素, 其次是那些没有的,例如
tear (>5) [1,10,2,12,3,13]
=> [[10,12,13],[1,2,3]]
我到目前为止所拥有的:
tear f [] = []
tear f (x:xs)
| f x = x: tear f xs
| otherwise = tear f xs
哪个生产
tear (>5) [1,10,2,12,3,13]
[10,12,13]
答案 0 :(得分:4)
按照@WillemVanOnsem的建议使用2元组:
tear f [] = ([],[])
tear f (x:xs)
| f x = (x:y,z)
| otherwise = (y,x:z)
where (y,z) = tear f xs