在Haskell中查找Char的Unicode脚本

时间:2018-03-06 18:37:18

标签: haskell unicode

我想编写一个函数来检查Char代表西里尔字母,纯粹是出于教学原因。俄语的简单近似是

isCyrillic c = 
    let lc = toLower c 
    in 'а' <= lc && lc <= 'я'

但我不喜欢它,因为它不处理其他使用西里尔语的语言。我可以对范围进行硬编码:

U+0400–U+04FF Cyrillic
U+0500–U+052F Cyrillic Supplement
U+2DE0–U+2DFF Cyrillic Extended-A
U+A640–U+A69F Cyrillic Extended-B
U+1C80–U+1C8F Cyrillic Extended-C

但这似乎也不是很好的做法。

理想情况下,该功能只是

isCyrillic c = unicodeScript c == Cyrillic

但这假定存在一个枚举Unicode脚本的类型(Unicode范围也可以)。有什么地方吗?

1 个答案:

答案 0 :(得分:7)

来自 text-icu &#39; Data.Text.ICU.Char

property似乎符合要求:

import Data.Text.ICU.Char

isCyrilic c = property Block c == Cyrillic