Je suis en train de concevoir une syntaxe pour les templates/génériques. Les langages de la famille C++ utilisent des chevrons pour cela, mais je cherche à utiliser un caractère séparateur à la place. Par exemple, si en Java vous pouvez écrire:Modèle/caractère de syntaxe générique
Map<String, Foo> foos = new HashMap<String, Foo>();
Je vise:
.foos = hmap*string*foo
Je suis en train de décider quel sera le caractère de séparation; ça ne peut pas être littéralement *, parce que c'est déjà utilisé pour la multiplication (pas que je ne puisse pas le surcharger, mais la précédence serait fausse). En regardant les caractères disponibles, certaines options sont
.foos = hmap!string!foo
.foos = hmap$string$foo
.foos = hmap?string?foo
.foos = hmap^string^foo
.foos = hmap`string`foo
.foos = hmap|string|foo
.foos = hmap~string~foo
Comme il est dans une certaine mesure une question esthétique, je me suis dit que je prendrais un sondage: quelle option préférez-vous? Y a-t-il une autre option qui serait préférable? (Comme d'habitude avec des questions comme celle-ci, si votre réponse a déjà été postée, veuillez la renvoyer plutôt que la dupliquer.)
De même, sur un clavier américain standard, `est non décalé, chacun des autres nécessite la touche Maj. Y a-t-il une différence sur les claviers internationaux? Y a-t-il des dispositions de clavier sur lesquelles l'un des candidats ci-dessus est particulièrement facile ou difficile à taper?
(Comme il est une question sans réponse unique droit, devrait-il être un wiki communautaire?)
Je crois que D utilise '' (args)!. –
Donc c'est le cas. Peut-être que je devrais utiliser! et suivez ce précédent, alors? (Je dois utiliser un caractère de marqueur explicite pour désambiguïser de la création d'objet, et je ne peux pas utiliser les crochets, car ils seraient ambigus par rapport aux opérateurs de comparaison.) – rwallace
@rwallace: Quel genre de grammaire essayez-vous de créer? Bien sûr, vous pouvez utiliser les mêmes symboles dans différents contextes. – Dario