Bonjour à tous,
Je suis débutant en Ocaml et j'ai encore quelques problèmes de logique (dans ma tête c'est moyennement clair donc pareil dans mon programme...).
Je vais aller droit au but.
Je dois coder une fonction "enum n" qui me retourne une liste telle que.
Code : Sélectionner tout - Visualiser dans une fenêtre à part enum n -> [0,1,...,n]
J'ai donc fait :
Après tests, la fonction me renvoie ce que je veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec enum n = match n with |0 -> [0] |_ -> enum (n - 1)@[n] ;;
Le problème survient lorsque je souhaite réaliser une autre fonction "enum_droite i n " telle que :
à l'aide de la fonction List.map .
Code : Sélectionner tout - Visualiser dans une fenêtre à part enum i n -> [(i,0);(i,1);(i,2);...;(i,n)]
J'ai donc fait :
En testant, je me retrouve à peu près le bon résultat mais je sens bien que je passe à coté de qqchose niveau compréhension.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let enum_droite i n = match n with |0 -> [(i,0)] /* si n = 0 alors je renvoie juste [(i,0)] */ |_ -> List.map (fun i -> (i,n)) (enum n) /* sinon List.map qui crée les couples (i,n) appliquée à ma liste [enum n ] */ ;;
Aurais je pu me passer du match .. with ? Ou si vous avez des commentaires suceptibles de m'aider...
Merci d'avance![]()
Partager