List 在Haskell中拆分列表列表中的内部列表
我目前正在努力解决一个问题,即在列表中将当前列表一分为二。例如,如果我有:List 在Haskell中拆分列表列表中的内部列表,list,haskell,list-manipulation,List,Haskell,List Manipulation,我目前正在努力解决一个问题,即在列表中将当前列表一分为二。例如,如果我有: [[A,B,C,F],[F,G,H,I]] 有没有简单的方法来拆分第二个列表(因为F是头)以便最终得到 [[A,B,C,F],[F],[G,H,I]] 我尝试了不同的方法,但是我找不到从函数返回两个独立值的方法。此外,由于我希望拆分的值在多个内部列表中重复,因此我只希望在它是列表头时拆分,而不是在其他时间拆分。我是这样尝试的: splitList [] = []; splitList (F:xs) = [[F]] +
[[A,B,C,F],[F,G,H,I]]
有没有简单的方法来拆分第二个列表(因为F是头)以便最终得到
[[A,B,C,F],[F],[G,H,I]]
我尝试了不同的方法,但是我找不到从函数返回两个独立值的方法。此外,由于我希望拆分的值在多个内部列表中重复,因此我只希望在它是列表头时拆分,而不是在其他时间拆分。我是这样尝试的:
splitList [] = [];
splitList (F:xs) = [[F]] ++ [xs];
splitList x = [x];
然而,这显然返回了整个列表中的列表列表,导致它无法工作,因为我将它映射到列表中的每个元素。非常感谢您的帮助,因为我最近才开始使用Haskell。函数返回一个值,但这个值可能是一个列表或元组,例如,这样您就可以返回多个值 首先定义如何从列表的开头拆分“F”
splitF :: String -> [String]
splitF ('F':xs) = ["F", xs]
splitF xxs = [xxs]
splitF "ABCF" ≡ ["ABCF"]
splitF "FGHI" ≡ ["F","GHI"]
现在将此函数映射到列表上
map splitF ["ABCF","FGHI"] ≡ [["ABCF"],["F","GHI"]]
最后连接列表
(concat . map splitF) ["ABCF","FGHI"] ≡ ["ABCF","F","GHI"]
concatMap splitF ["ABCF","FGHI"] ≡ ["ABCF","F","GHI"]
这似乎是一个XY问题: