Haskell:调用其他函数+递归

use*_*032 2 recursion haskell function list

我很难开始这样做,因为我不确定这个功能究竟发生了什么.它应该做的是接受2个参数,一个字符和一个字符串,然后输出由该字符分隔的字符串列表.

例如,

break ',' "abc,def,ghi"
Run Code Online (Sandbox Code Playgroud)

应输出["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 ++ ?)
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理这个或者acc如何帮助解决这个问题.我唯一的想法是第一行应该是

break _ [] = []
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*rdy 6

acc是"累加器"的缩写 - 您可以在递归时使用它来累积结果.看一下线索的类型break和brk一些线索:

break :: (Eq a) => a -> [a] -> [[a]]
brk   :: (Eq a) => a -> [a] -> [[a]] -> [[a]]
Run Code Online (Sandbox Code Playgroud)

或者更具体地说:

break :: Char -> String -> [String]
brk   :: Char -> String -> [String] -> [String]
Run Code Online (Sandbox Code Playgroud)

以下是一些可帮助您了解如何实施的问题brk:

  • 初始结果应该是什么?

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

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

  • 你怎么办?