Есть ли где-нибудь полный список допустимых символов или правило, которое определяет, что можно использовать в идентификаторе или операторе?
Какие символы разрешены для операторов 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 или пунктуация".