isAlpha和isLetter有什么区别?

Ami*_*mit 9 haskell char

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

nix*_*gle 9

看看他们看起来相同的来源.

这是isLetter4.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
Run Code Online (Sandbox Code Playgroud)

定义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
Run Code Online (Sandbox Code Playgroud)

它们似乎有不同的实现,但它们被记录为具有相同的效果.


mip*_*adi 6

现在没有真正的区别.来自文档:

isAlpha :: Char -> Bool
选择字母Unicode字符(小写,大写和标题大小写字母,加上无语脚本和修饰符字母).此函数等效于Data.Char.isLetter.