Строка содержит только алфавит в haskell - PullRequest
0 голосов
/ 04 октября 2018

Я хочу создать функцию, которая решает, является ли символ буквой алфавита в Haskell

isLetter :: Char -> Bool

Таким образом, результат может выглядеть так: если я наберу isLetter 'c', результат будетTrue, а если isLetter ' ', то результат False.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете определить эту функцию самостоятельно,

isLetter :: Char -> Bool
isLetter 'A' = True
isLetter 'B' = True
...
isLetter 'Z' = True

Но как насчет строчных букв?А как насчет иностранных букв, таких как 'ß', 'ü', 'Ф', 'Й' или 'Æ' и их вариантов в верхнем / нижнем регистре?Поскольку Unicode настолько сложен, для любого использования на производственном уровне вы должны зависеть от уже созданных библиотечных функций.Если вы не знаете, как они называются, зайдите в Hoogle и поищите "Char -> Bool" , и вам часто будут указывать на библиотеку, которая содержит именно то, что вы хотите.: -)

Например, документация для Data.Char.isAlpha гласит:

Выбирает буквенные символы Юникода (строчные, прописные и заглавные буквы, плюс буквыбез учета сценариев и модификаторов писем). Эта функция эквивалентна Data.Char.isLetter.

Бьюсь об заклад, вы не думали о букв заглавных букв , букв сценариев без регистра и букв-модификаторов !(Я не знал.)

Я даже не знал, букв-модификаторов существует.По-видимому, 'ˀ' (гортанная остановка) - это письмо, используемое Сквошами из юго-западной части Британской Колумбии, Канада.Есть канадские дорожные знаки, которые не учитывают твою функцию!

Ты собираешься быть тем парнем, который скажет Ḇøᵇ, что он не может сесть в самолет ?!: Đ

0 голосов
/ 04 октября 2018

Вы можете использовать Data.Char.isAlpha, чтобы проверить, что символ является символом алфавита.

...