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
在那种情况下,您的 takeFirstElem
是 listToMaybe :: [a] -> Maybe a
的特例。
我需要创建一个接受字符串第一个元素的函数,但是因为我在另一个函数中递归地使用这个函数,所以我需要为空列表声明一个 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
在那种情况下,您的 takeFirstElem
是 listToMaybe :: [a] -> Maybe a
的特例。