Existe-t-il une liste complète des caractères autorisés quelque part ou une règle qui détermine ce qui peut être utilisé dans un identifiant par rapport à un opérateur?
Réponses
Trop de publicités?À partir du haskell rapport, c'est la syntaxe pour les caractères autorisés:
special -> ( | ) | , | ; | [ | ] | `| { | }
symbol -> ascSymbol | uniSymbol<special | _ | : | " | '>
ascSymbol -> ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @
\ | ^ | | | - | ~
uniSymbol -> any Unicode symbol or punctuation
Ainsi, les symboles sont des symboles ascii ou unicode symboles à l'exception de ceux en special | _ | : | " | '
, qui sont réservés (ici a | b
signifie "c'est peut-être a
ou b
"et, a<b>
signifie "peut-être tout en a
sauf b
").
Quelques paragraphes ci-dessous, le rapport donne la définition complète de haskell opérateurs:
varsym -> ( symbol {symbol | :})<reservedop | dashes>
consym -> (: {symbol | :})<reservedop>
reservedop -> .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>
Opérateur symboles sont formés à partir d'un ou plusieurs caractères de symbole, comme défini ci-dessus, et sont lexicalement distingués en deux espaces de noms (Section 1.4):
- Un opérateur symbole de départ avec un colon est un constructeur.
- Un opérateur symbole de commencer avec n'importe quel autre caractère ordinaire de l'identificateur.
Notez qu'un colon par lui-même, ":", est exclusivement réservé à une utilisation en tant que l' Haskell liste de constructeur, ce qui rend son traitement uniforme avec d'autres les pièces de la syntaxe de la liste, tels que les "[]" et "[a,b]".
Autre que la syntaxe spéciale pour le préfixe de négation, tous les opérateurs sont infix, bien que chaque opérateur infixe peut être utilisé dans une section de rendement partiellement appliquée opérateurs (voir la Section 3.5). Tous de la norme infix des opérateurs et de symboles prédéfinis peut être reprise.
Extrait du rapport Haskell 2010 §2.4 :
Les symboles d'opérateur sont formés d'un ou plusieurs caractères de symbole ...
Le §2.2 définit les caractères de symbole comme étant l'un quelconque de !#$%&*+./<=>?@\^|-~:
ou "tout symbole Unicode [non-ascii] ou ponctuation".
Ce que je cherchais la liste complète des personnages. Sur la base des autres réponses, la liste complète est;
Unicode Ponctuation:
- 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
Unicode Symboles:
- 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
Mais à l'exclusion de la suite de caractères ayant une signification particulière en Haskell:
(),;[]`{}_:"'