在 Haskell 中,该函数Data.Char.isAlpha
检查字符是否为字母,但Data.Char.isLetter
. 这些功能之间有什么真正的区别,或者它们可以互换吗?
问问题
7125 次
2 回答
12
查看来源,它们似乎是等效的。
这是isLetter
4.3.1.0 中定义的定义
-- 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
-- | 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
它们似乎具有不同的实现,但它们被记录为具有相同的效果。
于 2012-11-21T20:32:30.417 回答
9
现在没有真正的区别。从文档:
isAlpha :: Char -> Bool
选择字母 Unicode 字符(小写、大写和标题大小写字母,加上无大小写脚本的字母和修饰符字母)。此函数等效于 Data.Char.isLetter。
于 2012-11-21T20:29:02.363 回答