Haskell ||缺少空元素

Haskell || Missing Null Element

我需要创建一个接受字符串第一个元素的函数,但是因为我在另一个函数中递归地使用这个函数,所以我需要为空列表声明一个 Edge Case。如果给定一个空列表,这个函数怎么可能什么都不做。

takeFirstElem :: String -> Char
takeFirstElem [] = {- missing Element -}
takeFirstElem (x:xs) = x

我缺少的是类似于空元素的东西(比如空列表 [] 中的 nil 元素)。是否存在类似的情况或是否有其他方法可以解决此问题?

有一个NULL character \NUL [wiki],但是你不能return“没有”。你应该 return 每个类型签名总是 Char

通常,如果输入可能无效,Maybe Char 会被 return 编辑,因此 return 是 Nothing,以防输入无效,[= =14=] 以防输入有效,因此您可以将其实现为:

takeFirstElem :: String -> <strong>Maybe</strong> Char
takeFirstElem [] = <strong>Nothing</strong>
takeFirstElem (x:_) = <strong>Just</strong> x

在那种情况下,您的 takeFirstElemlistToMaybe :: [a] -> Maybe a 的特例。