2012-11-21 15 views
8

Haskell'de, Data.Char.isAlpha işlevi, karakterin bir harf olup olmadığını denetler, ancak Data.Char.isLetter yapar. Bu işlevler arasında gerçek bir fark var mı, yoksa değiştirilebilir mi?isAlpha ve isLetter arasındaki fark nedir?

cevap

8

sources görüntülerine eşdeğer görünüyorlar. 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 

tanımlanan Ve definitionisAlpha itibariyle Burada

isLetter tanımıdır: görünürler

-- | 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 

farklı uygulamaları var, ancak sahip oldukları için belgelenmiştir aynı etki.

6

şimdi gerçek bir fark yoktur. the docs Gönderen:

isAlpha :: Char -> Bool
alfabetik Unicode karakterleri (küçük harf, büyük harf ve başlık harfler, artı Kovansız komut ve düzenleyiciler harflerin harfleri) seçer. Bu işlev Data.Char.isLetter öğesine eşdeğerdir.