Какие символы разрешены для операторов haskell?
есть ли где-то полный список разрешенных символов или правило, которое определяет, что можно использовать в идентификаторе против оператора?
3 ответа:
С отчет Хаскелл, это синтаксис для разрешенных символов:
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). Все стандартные операторы инфикса - это просто предопределенные символы и могут быть отскоком.
символы оператор формируются из одного или нескольких символов...
§2.2 определяет символы как ни
!#$%&*+./<=>?@\^|-~:
или "любой [не ascii] символ Юникода или пунктуация".
то, что я искал был полный список символов. Основываясь на других ответах, полный список;
Unicode Символы:
- 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:
(),;[]`{}_:"'