39 votes

Quels caractères sont autorisés pour les opérateurs de haskell?

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?

33voto

Riccardo Points 6035

À 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.

22voto

dave4420 Points 31298

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".

6voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: