在Haskell中,函数Data.Char.isAlpha
检查字符是否为字母,Data.Char.isLetter
也是如此。这些功能之间是否有任何真正的区别,或者它们是否可以互换?
答案 0 :(得分:9)
查看sources它们似乎是等效的。
以下是4.3.1.0
中定义的isLetter
的定义
-- derived character classifiers
-- | Selects alphabetic Unicode characters (lower-case, upper-case and
-- title-case letters, plus letters of caseless scripts and modifiers letters).
-- This function is equivalent to 'Data.Char.isAlpha'.
isLetter :: Char -> Bool
isLetter c = case generalCategory c of
UppercaseLetter -> True
LowercaseLetter -> True
TitlecaseLetter -> True
ModifierLetter -> True
OtherLetter -> True
_ -> False
isAlpha
的{{3}}:
-- | Selects alphabetic Unicode characters (lower-case, upper-case and
-- title-case letters, plus letters of caseless scripts and modifiers letters).
-- This function is equivalent to 'Data.Char.isLetter'.
isAlpha :: Char -> Bool
isAlpha c = iswalpha (fromIntegral (ord c)) /= 0
它们似乎有不同的实现,但它们被记录为具有相同的效果。
答案 1 :(得分:6)
现在没有真正的区别。来自the docs:
isAlpha :: Char -> Bool
选择字母Unicode字符(小写,大写和标题大小写字母,加上无语脚本和修饰符字母)。此函数等效于Data.Char.isLetter。