我需要創建一個函式來獲取字串的第一個元素,但是因為我在另一個函式中遞回地使用這個函式,所以我需要為一個空串列宣告一個 Edge Case。如果給定一個空串列,這個函式怎么能什么都不做。
takeFirstElem :: String -> Char
takeFirstElem [] = {- missing Element -}
takeFirstElem (x:xs) = x
我缺少的是類似于空元素的東西(就像空 List [] 中的 nil 元素)。是否存在這樣的事情,或者是否有其他方法可以解決此問題?
uj5u.com熱心網友回復:
有一個NULL 字符\NUL[wiki],但你不能回傳“什么都沒有”。您應該始終回傳Char每個型別的簽名。
通常,如果輸入可能無效,Maybe Char則回傳 a 并因此Nothing在輸入無效的情況下回傳 a ,Just x在輸入有效的情況下回傳 a ,因此您可以將其實作為:
takeFirstElem :: String -> Maybe Char
takeFirstElem [] = Nothing
takeFirstElem (x:_) = Just x
在那種情況下, yourtakeFirstElem是 的特例listToMaybe :: [a] -> Maybe a。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398724.html
