我想编写一个函数,检查一个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范围也可以)的类型。有这样的类型吗?