判斷一個字串是否為識別符號,即是否以大寫字母或小寫字母開頭,其他元素全部為小寫、大寫、數字或下劃線字符。
isunderscore :: Char -> Bool
isunderscore a
|a == '_' = True
|otherwise = False
identifier :: String -> Bool
identifier (x:xs) = isLetter x && ( all isLetter xs || all isunderscore xs || all isDigit xs )
identifier _ = False
uj5u.com熱心網友回復:
x是一個字串。您用于last :: [a] -> a獲取最后一個元素。但是在這里您需要檢查所有剩余元素是否滿足某個謂詞。這意味著您可以使用all :: Foldable f => (a -> Bool) -> f a -> Bool. 您可以通過模式匹配(x:xs)來獲得對頭部和尾部的訪問,然后檢查all尾部的所有元素是否滿足某個謂詞,因此:
identifier :: String -> Bool
identifier (x:xs) = isLetter x && all … xs
identifier _ = False
您需要在哪里實作該…部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470760.html
