【发布时间】:2021-04-22 22:00:05
【问题描述】:
我需要一个函数:
splitOn :: (Eq p) => p -> [p] -> ([p], [p])
这样:
splitOn 'b' ['a', 'b', 'b', 'b', 'c', 'a'] = (['a', 'b', 'b'], ['c', 'a'])
splitOn 'b' ['a', 'b', 'c', 'a'] = (['a'], ['c', 'a'])
传递的参数保证在中间的连续块中。
有没有办法在列表中一次性完成splitOn?
对不起,如果这是重复的,我找不到搜索它的方法。
【问题讨论】:
-
你是想从头开始写这个,还是把标准库函数放在一起来做?
-
我正在尝试将标准库函数组合在一起。
-
目前我正在对元素进行排序,以便在“分隔符”元素之后拆分,然后从左侧列表中删除它,但这似乎不是最好的解决方案。
-
不,这基本上是倒退。您为什么不解释一下您实际上要做什么,以确保这不是 XY 问题?上下文是什么?
-
根据您目前所说的,看看
break和dropWhile。但在上下文中可能会做得更好。