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 に答える