Salut,
J'avais remarqué que les numéros de ligne étaient incorrects, toujours off de 1. Je viens de prendre le temps de regarder ça et j'ai une patch que j'aimerais merger si vous voulez la réviser.
https://gitlab.com/monnier/typer/-/commit/e0d8110c35cd9cdfd69f87233d03c25ac1...
Le changement lui-même est un simple - 1 dans source.ml. Je me suis laissé un peu emporter par les tests, où j'ai ajouté un module pour avoir des bons messages d'erreur quand on compare des listes. Dites-moi si vous aimez, si oui je peux changer pas mal d'autres tests de sexps, lexps, etc pour utiliser ce module et effacer pas mal de code.
Justement, sur ce sujet, un truc super laborieux en Ocaml est de réécrire pour chaque type une fonction pour les afficher. Je sais qu'on veux éviter les dépendances, mais je viens de me rendre compte de quelque chose.
https://ppxlib.readthedocs.io/en/latest/ppx-for-end-users.html#dropping-ppx-...
Ppxlib supporte la génération de code sans dépendances à ppxlib. C'est-à-dire que le code généré va continuer à fonctionner même si on l'enlève, par exemple s'il ne marche plus avec une version future de Ocaml. Qu'est-ce que vous en pensez?
Finalement, un truc qui me dérange est le traitement différent de -> et =, plus particulièrement la différence avec les retours de chariot. On brise le ligne avant le ->, mais après le =.
match a with | B -> c; d
let a = b
La raison est que -> est un opérateur, mais n'est-ce pas plus un séparateur comme le = ?
match a with | B -> c; d
On sauve quand même deux colonnes d'espace horizontal, ce qui n'est pas négligeable quand on veut respecter les 80 colonnes. Surtout que deux matchs imbriqués n'est pas rare.
Dites-moi ce que vous en pensez. Simon