Data.CharのisAlphaはマルチバイト文字を正しく扱えない

 isAlphaNumも同様。
まじ注意。

Prelude> import Data.Char
Prelude Data.Char> isAlpha 'あ'
True
Prelude Data.Char> isAlphaNum 'あ'
True

これを定義しておけばいいんだけど、他にどっかData.Text以下あたりでexportしてないかなー。

isAlpha' :: Char -> Bool
isAlpha' c = c `elem` ['A'..'Z']
          || c `elem` ['a'..'z']

isAlphaNum' :: Char -> Bool
isAlphaNum' c = c `elem` ['A'..'Z']
             || c `elem` ['a'..'z']
             || c `elem` ['0'..'9']

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。