Volevo avere una versione ricorsiva in coda di List.map
, quindi ho scritto la mia. Eccolo:L'argomento facoltativo non può essere cancellato?
let rec list_map f l ?(accum=[])=
match l with
head :: tail -> list_map f tail ~accum:(head :: accum)
| [] -> accum;;
Ogni volta che compilo questa funzione, ottengo:
File "main.ml", line 69, characters 29-31:
Warning X: this optional argument cannot be erased.
Il tutorial dice che questo significa che sto cercando di creare una funzione senza argomenti non opzionali. Ma la funzione sopra accetta chiaramente argomenti non opzionali.
Probabilmente sto solo facendo qualcosa di veramente stupido, ma cosa?
dovresti dare un'occhiata ai post recenti sulla mailing list ocaml sulle mappe ricorsive di coda. http://groups.google.com/group/fa.caml/browse_thread/thread/8b2a70a767e6a433 – nlucaroni