Pour prendre une grosse application en OCaml que je connais pas trop mal, Coq, qui tape dans les 230 kloc, je peux témoigner que les exceptions, ça ne passe vraiment pas du tout à l'échelle.
Quant tu reçois une exception à toplevel, elle est passée par trois ou quatre phases de rattrapage-puis-relançage, rendant le parcours du flot de contrôle aussi aisée que du trekking dans les Andes avec l'association française des tétraplégiques. Sans compter le fait que c'est une vraie horreur de repérer les fonctions qui peuvent lever des exceptions, et que certains usages font songer que les développeurs de Coq doivent avoir des personnalités multiples pour arriver à créer un langage aussi pur et écrire des gorkeries d'un niveau inégalé. Je peux citer l'exemple d'une fonction de cinquante lignes qui utilisait récursions, références et exceptions dans un gloubiboulga de contrôle, alors que ça se réduisait à un bête fold sur une liste avec une fonction pure, sans perte d'efficacité…
[^] # Re: dommage
Posté par Perthmâd . En réponse au journal The Future of Functional Programming Languages. Évalué à 6.
Pour prendre une grosse application en OCaml que je connais pas trop mal, Coq, qui tape dans les 230 kloc, je peux témoigner que les exceptions, ça ne passe vraiment pas du tout à l'échelle.
Quant tu reçois une exception à toplevel, elle est passée par trois ou quatre phases de rattrapage-puis-relançage, rendant le parcours du flot de contrôle aussi aisée que du trekking dans les Andes avec l'association française des tétraplégiques. Sans compter le fait que c'est une vraie horreur de repérer les fonctions qui peuvent lever des exceptions, et que certains usages font songer que les développeurs de Coq doivent avoir des personnalités multiples pour arriver à créer un langage aussi pur et écrire des gorkeries d'un niveau inégalé. Je peux citer l'exemple d'une fonction de cinquante lignes qui utilisait récursions, références et exceptions dans un gloubiboulga de contrôle, alors que ça se réduisait à un bête fold sur une liste avec une fonction pure, sans perte d'efficacité…