Что не так с этим именем переменной Unicode на Haskell?

Что не так в этом коде?

Prelude> let xᵀ = "abc"
<interactive>:10:6: lexical error at character '\7488'

Согласно моему прочтению отчета Haskell 2010, любая буква Юникода в верхнем или нижнем регистре должна быть действительной в конце имени переменной. Ли символ ( ПИСЬМО МОДИФИКАТОРА КАПИТАЛА T) не может считаться заглавной буквой Юникода?

Есть ли лучший символ для представления транспонента вектора? Я хотел бы быть кратким, поскольку я оцениваю плотную математическую формулу.

Я использую GHC 7.8.3.

2 ответа

Решение

Прописные буквы Unicode находятся в категории символов Unicode Letter, Uppercase [Lu].

Строчные буквы Юникода находятся в категории символов Юникод Буква, Строчные [Ll].

ПИСЬМО МОДИФИКАТОРА КАПИТАЛА T находится в категории символов Юникод Буква, Модификатор [Lm].

Я склонен придерживаться ASCII, поэтому я бы, вероятно, просто использовал имя как xTrans или же x'в зависимости от количества строк оно находится в области видимости.

Символы, не относящиеся к ЛЮБОЙ категории, недопустимы в программах на Haskell и должны приводить к ошибке лексизма.

где

ANY         →   graphic | whitechar 

graphic     →   small | large | symbol | digit | special | " | '

small       →   ascSmall | uniSmall | _<br>
ascSmall    →   a | b | … | z<br>
uniSmall    →   any Unicode lowercase letter

...

uniDigit    →   any Unicode decimal digit 

...

Буквы-модификаторы типа не являются законными Haskell на всех. (В отличие от под- или надстрочных чисел, которые находятся в категории " Число", "Другие", a₁ рассматривается так же, как a1.)

Мне нравится использовать не-ASCII Unicode, когда это помогает удобочитаемости, но если вы уже не назначили другое значение простому символу, используйте его здесь для транспонирования, должно быть просто отлично.

Другие вопросы по тегам