我很难开始这样做,因为我不确定这个功能究竟发生了什么。它应该做的是接受2个参数,一个字符和一个字符串,然后输出由该字符分隔的字符串列表。
例如,
break ',' "abc,def,ghi"
应输出[“abc”,“def”,“ghi”]
我得到了代码,我应该填写“?”
break ? [] = ?
break n xs = brk n xs ?
where
brk n xs acc
| xs == [] = ?
| n == ? xs = ? ++ break n (? xs)
| ? = brk n (? xs) (acc ++ ?)
我不确定如何处理此问题或acc如何帮助解决此问题。我唯一的想法是第一行应该是
break _ [] = []
如果有人可以帮我解决这个问题,那就太棒了!谢谢!
答案 0 :(得分:6)
acc
是“累加器”的缩写 - 您可以在递归时使用它来累积结果。查看break
和brk
的类型,了解一些线索:
break :: (Eq a) => a -> [a] -> [[a]]
brk :: (Eq a) => a -> [a] -> [[a]] -> [[a]]
或更具体地说:
break :: Char -> String -> [String]
brk :: Char -> String -> [String] -> [String]
以下是一些问题,可帮助您了解如何实施brk
:
初始结果应该是什么?
拆分空列表时应该得到什么?
当分裂字符出现在字符串的开头时,您应该怎么做?
你应该怎么做?