Bonjour,
Depuis OCaml 4.02, il semble possible de rattraper une exception dans un filtrage de motif, ce qui permet si j’ai bien compris de s’affranchir de l’utilisation de la structure try ... with
. J’utilise OCaml 4.02.3 et bénéficie donc de cette fonctionnalité.
Dans le cadre de la résolution d’un problème du Project Euler, je souhaite coder une fonction de lecture d’un fichier. La fonction prend comme argument un canal d’entrée, généré avec la fonction open_in. Elle lit chaque ligne du fichier puis construit une liste de chaînes de caractères représentant la liste des lignes. La condition d’arrêt de cette fonction récursive est l’atteinte de la fin du fichier, c’est-à-dire la levée de l’exception End_of_file
par la fonction input_line
.
let construction_liste entree =
let rec aux entree liste = match input_line entree with
| x -> aux entree (x::liste)
| exception End_of_file -> liste
in aux entree []
L’erreur à l’exécution de cette fonction est un simple Syntax error à la ligne 4.
Ai-je mal compris l’utilisation de cette fonctionnalité d’OCaml 4.02 ?
Merci pour votre attention !
NB : la liste générée par cette fonction (enfin, si seulement elle compilait…) serait inversée et commencerait par la dernière ligne. J’ai simplement enlevé le List.rev
du code, pour ne conserver que l’essentiel du problème dont il est question.