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 _ [] = []

如果有人可以帮助我开始解决这个问题,那就太好了!谢谢!

4

1 回答 1

6

acc是“累加器”的缩写——你在递归时用它来累加你的结果。查看类型breakbrk一些线索:

break :: (Eq a) => a -> [a] -> [[a]]
brk   :: (Eq a) => a -> [a] -> [[a]] -> [[a]]

或者更具体地说:

break :: Char -> String -> [String]
brk   :: Char -> String -> [String] -> [String]

这里有一些问题可以帮助您弄清楚如何实施brk

  • 最初的结果集应该是什么?

  • 拆分空列表时应该得到什么?

  • 当拆分字符出现在字符串的开头时,您应该怎么做?

  • 否则你应该怎么做?

于 2012-09-18T05:10:53.247 回答