Haskell约定:可能还是空列表?

Max*_*Max 6 haskell

请Haskell的任何专家在那里为我澄清一些事情:

给出一个函数的简化示例,match它应该从列表返回一个匹配的值,这是使用Maybe或返回的"更好"的函数定义[](空列表)?

那是:

match :: String -> [String] -> Maybe String
Run Code Online (Sandbox Code Playgroud)

要么

match :: String -> [String] -> [String]     {- possibly empty, if no match -}
Run Code Online (Sandbox Code Playgroud)

出于清晰的原因,我更喜欢第一个版本,但我很想知道这种事情是否有约定.

luq*_*qui 21

如果它只能返回零或一个匹配,那么使用Maybe(因为这意味着它); 如果可以返回任意数量的匹配,那么使用[](因为这就是它的含义).

  • +1完美答案.在正则表达式中思考,`List`是`*`,因为`Maybe`是`?`. (6认同)