List.iter / OCaml
Op_m
Messages postés
2
Statut
Membre
-
Op_m Messages postés 2 Statut Membre -
Op_m Messages postés 2 Statut Membre -
Bonjour,
j'aimerais reconstruire la fonction preexistante List.iter en OCaml. j'ai fais quelques essais mais impossible de retrouver le bon typage, a savoir : ('a -> unit) -> 'a list -> unit = <fun>.
Voila ou j'en suis :
let rec list_iter f l = match l with
[] -> []
| e::t -> begin (f e); list_iter f t;() end;;
et on me revoi l'erreur :
"This expression has type unit but is here used with type 'a list"
Si quelqu'un peut m'aider a resoudre ce probleme qui je m'en rends compte ne doit pas etre tres complique, je lui en serait tres reconnaissant.
j'aimerais reconstruire la fonction preexistante List.iter en OCaml. j'ai fais quelques essais mais impossible de retrouver le bon typage, a savoir : ('a -> unit) -> 'a list -> unit = <fun>.
Voila ou j'en suis :
let rec list_iter f l = match l with
[] -> []
| e::t -> begin (f e); list_iter f t;() end;;
et on me revoi l'erreur :
"This expression has type unit but is here used with type 'a list"
Si quelqu'un peut m'aider a resoudre ce probleme qui je m'en rends compte ne doit pas etre tres complique, je lui en serait tres reconnaissant.
Configuration: Windows XP Internet Explorer 7.0
2 réponses
-
let rec list_iter f l = match l with [] -> [] | e::t -> f e :: list_iter f t ;;
Signature hors-charte - Supprimée par la modération -
enfait la fonction que tu as ecrite est un List.map et non List.iter. Elle n'a pas le typage que j'aurais voulus. c'est a dire qu'elle renvoi ('a -> 'b) -> 'a list -> 'b alors que je voudrais que f renvoi un unit.