Je voulais avoir une version récursive en queue de List.map
, j'ai donc écrit la mienne. Ici, il est:L'argument facultatif ne peut pas être effacé?
let rec list_map f l ?(accum=[])=
match l with
head :: tail -> list_map f tail ~accum:(head :: accum)
| [] -> accum;;
Chaque fois que je compile cette fonction, je reçois:
File "main.ml", line 69, characters 29-31:
Warning X: this optional argument cannot be erased.
Le tutorial dit que cela signifie que je suis en train de créer une fonction sans argument non en option. Mais la fonction ci-dessus prend clairement des arguments non optionnels.
Je suis probablement en train de faire quelque chose de vraiment idiot, mais quoi?
vous devriez jeter un coup d'oeil aux messages récents sur la liste de diffusion d'ocaml au sujet des cartes récursives de queue. http://groups.google.com/group/fa.caml/browse_thread/thread/8b2a70a767e6a433 – nlucaroni