List.iter / OCaml

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.
Configuration: Windows XP Internet Explorer 7.0

2 réponses

  1. stephane_mc2004 Messages postés 807 Statut Membre 96
     
    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
    3
  2. Op_m Messages postés 2 Statut Membre 1
     
    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.
    1