isAlpha和isLetter有什么区别?

时间:2012-11-21 20:26:18

标签: haskell char

在Haskell中,函数Data.Char.isAlpha检查字符是否为字母,Data.Char.isLetter也是如此。这些功能之间是否有任何真正的区别,或者它们是否可以互换?

2 个答案:

答案 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。