Есть ли где-нибудь полный список допустимых символов или правило, которое определяет, что можно использовать в идентификаторе или операторе?
Какие символы разрешены для операторов Haskell?
Ответ 1
То, что я искал, был полный список персонажей. Основываясь на других ответах, полный список:
Пунктуация Юникода:
- http://www.fileformat.info/info/unicode/category/Pc/list.htm
- http://www.fileformat.info/info/unicode/category/Pd/list.htm
- http://www.fileformat.info/info/unicode/category/Pe/list.htm
- http://www.fileformat.info/info/unicode/category/Pf/list.htm
- http://www.fileformat.info/info/unicode/category/Pi/list.htm
- http://www.fileformat.info/info/unicode/category/Po/list.htm
- http://www.fileformat.info/info/unicode/category/Ps/list.htm
Символы Юникода:
- http://www.fileformat.info/info/unicode/category/Sc/list.htm
- http://www.fileformat.info/info/unicode/category/Sk/list.htm
- http://www.fileformat.info/info/unicode/category/Sm/list.htm
- http://www.fileformat.info/info/unicode/category/So/list.htm
Но исключая следующие символы со специальным значением в Haskell:
(),;[]'{}_:"'
A :
разрешен только в качестве первого символа оператора и обозначает конструктор (см. Символ оператора, начинающийся с двоеточия, является конструктором).
Ответ 2
Из отчета Haskell это синтаксис разрешенных символов:
a | b
означает a or b
и
a<b>
означает a except b
special -> ( | ) | , | ; | [ | ] | '| { | }
symbol -> ascSymbol | uniSymbol<special | _ | : | " | '>
ascSymbol -> ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @
\ | ^ | | | - | ~
uniSymbol -> any Unicode symbol or punctuation
Таким образом, символы являются символами ASCII или символами Юникода, за исключением символов в special | _ | : | " | '
, которые зарезервированы.
Это означает, что следующие символы не могут быть использованы: | , ; [ ] ' { } _ : " '
В нескольких параграфах ниже отчет содержит полное определение операторов Haskell:
varsym -> ( symbol {symbol | :})<reservedop | dashes>
consym -> (: {symbol | :})<reservedop>
reservedop -> .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>
Символы оператора формируются из одного или нескольких символов символов, как определены выше, и лексически различаются в двух пространствах имен (Раздел 1.4):
- Символ оператора, начинающийся с двоеточия, является конструктором.
- Символ оператора, начинающийся с любого другого символа, является обычным идентификатором.
Обратите внимание, что двоеточие само по себе ":" зарезервировано исключительно для использования в качестве Конструктор списка Haskell; это делает его лечение единообразным с другими части синтаксиса списка, такие как "[]" и "[a, b]".
За исключением специального синтаксиса для отрицания префикса, все операторы инфикс, хотя каждый оператор инфикса может быть использован в разделе для получения частично применяемые операторы (см. раздел 3.5). Все стандартные Инфиксные операторы являются просто предопределенными символами и могут быть отскок.
Ответ 3
Символы оператора формируются из одного или нескольких символов символов...
§2.2 определяет символы символов как любые из !#$%&*+./<=>[email protected]\^|-~:
или "любой символ [non-ascii] Unicode или пунктуация".