我想创建一个函数来确定字符是Haskell字母中的字母
isLetter :: Char -> Bool
因此结果可能看起来像这样:如果我键入isLetter 'c'
,则结果将为True
;如果是isLetter ' '
,则结果将为False
。 / p>
答案 0 :(得分:10)
您可以自己定义此功能,
isLetter :: Char -> Bool
isLetter 'A' = True
isLetter 'B' = True
...
isLetter 'Z' = True
但是小写字母呢?像'ß'
,'ü'
,'Ф'
,'Й'
或'Æ'
这样的外来字母及其大写/小写变体呢?因为Unicode非常复杂,所以对于任何生产级别的使用,您都应依赖已构建的库函数。当您不知道它们的名字时,go to Hoogle and search for "Char -> Bool
"经常会指向一个包含所需内容的库。 :-)
例如,Data.Char.isAlpha
的文档说:
选择字母Unicode字符(小写,大写和标题大写字母,以及无大小写的脚本字母和修饰符字母)。 此功能等效于
Data.Char.isLetter
。
我敢打赌您没想到标题大写字母,无大小写字母的字母和修饰词! (我没有。)
我什至不知道修饰语字母存在。显然,'ˀ'
(声门停止)是加拿大西南不列颠哥伦比亚省的Squamish people使用的字母。有加拿大的路标表明您的功能未考虑在内!
你会成为告诉Ḇøᵇ他不能上飞机的人吗? :Đ
答案 1 :(得分:4)
您可以使用Data.Char.isAlpha
来检查字符是否为字母符号。
答案 2 :(得分:0)
我认为这对您有用。
isLetter :: Char -> Bool
isLetter c = (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))
答案 3 :(得分:0)
我们可以使用elem
函数和范围来查看字符是否为字母。请注意,范围['a'..'z']
包含列表中从 a 到 z 的所有字母。同样,范围['A'..'Z']
是一个包含所有大写字母的列表。因此,该函数将检查给定字符是否属于这些列表中的任何一个,如果包含,则返回True
;否则,它将返回False
。
isLetter :: Char -> Bool
isLetter character = if character `elem` ['a'..'z'] || character `elem` ['A'..'Z']
then True
else False