Haskell:调用其他函数+递归

时间:2012-09-18 04:44:46

标签: list function haskell recursion

我很难开始这样做,因为我不确定这个功能究竟发生了什么。它应该做的是接受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 _ [] = []

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

1 个答案:

答案 0 :(得分: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

  • 初始结果应该是什么?

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

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

  • 你应该怎么做?