list - 如何在 Haskell 中生成两个列表

标签 list haskell

如何在 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]

最佳答案

按照@WillemVanOnsem 的建议使用二元组:

tear f [] = ([],[])
tear f (x:xs)
 | f x = (x:y,z)
 | otherwise = (y,x:z)
    where (y,z) = tear f xs

关于list - 如何在 Haskell 中生成两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54062945/

相关文章:

haskell - 在 OS X Mountain Lion 上构建 “text” 库失败

python - 在 Python 中将时间增量相加

list - 如何使用 R 自动创建结构列表?

python - float 双重列表?

haskell - Haskell Yesod堆栈生成可运行文件

haskell - 多次使用++ : more efficient if I force the evaluation from right to left?

python - 如何将列表转换为具有数组中元素的特定顺序的数组

java - 泛型 List<String> 和 List<Integer> 未按预期运行

database - Haskell Persistent 上的 CRUD 模式

list - 在 Haskell 中完全消除重复项