À ton avis, quelles sont les différentes étapes à suivre pour parser un programme dans un langage comme OCaml, et quelles sont les étapes à suivre pour parser un programme OCaml où on ajoute la possibilité de déclarer l'associativité de ses opérateurs ?
Tu ne te poses pas une bonne question. Le but n'est pas "de ne pas se faire chier en écrivant l'interpréteur", c'est de faire un langage de qualité.
Bienvenue dans le vrai monde, où la maintenabilité du code est un critère à prendre en compte et où le temps de travail des développeurs n'est pas gratuit.
Et dont on s'est parfaitement sortis en utilisant @@ plutôt que $. D'ailleurs, ni le code originel ni l'exemple que Saroupille a donné pour introduire $ n'ont besoin que son associativité soit définie : ils n'utilisent l'opérateur qu'une fois par expression. Ça rejoint ce que je disais plus haut : pouvoir déclarer un opérateur précis avec son associativité (et par extension sa priorité) n'offre que des avantages concrets très limités par rapport à la complexité d'implémentation supplémentaire, qui elle est non négligeable dans le parsing.
C'est pas une question de s'en sortir. C'est une question d'ambiguïté induite par le langage.
Il n'y a absolument aucune ambiguité. Certains opérateurs sont associatifs à gauche, d'autres à droite, et c'est défini de façon claire et univoque par la documentation.
Mais oui tu as raison et tu es très beau.
Il ne me semble vraiment pas qu'on ait besoin de partir dans des attaques ad hominem pour continuer ce débat. Si ça n'est pas ton avis et que tu as besoin de ça pour t'exprimer, je propose qu'on s'arrête tout de suite, ça ne m'intéresse pas.
Sinon, regardons sur Github. Wow. Sur les vrais projets, les gens utilisent plusieurs @@
dans une même expression. Dingue hein ?
Et alors ? Est-ce que ces gens se plaignent du comportement des opérateurs en OCaml ? Non, c'est un sujet de discussion que je n'ai personnellement jamais vu sur les différents canaux où les gens font des remarques sur le langage. Est-ce que les gens ont du mal à utiliser @@
parce qu'en haskell on écrit $
à la place ? Manifestement non, puisque l'usage de cet opérateur plusieurs fois dans la même expression est répandu. Le problème que tu soulèves est en pratique inexistant.