Besoin d'aide en CamL

Résolu
Bonjour,
Je suis étudiant en première année de licence en informatique et notre prof de programmation nous fait travailler sur CamL (oui, je sais...)
toujours est-il que je bloque sur un programme qui sert à retourner une liste.

let l2 = [] in
let rec reverse(l) = if est_seq_vide(l) then l2
else ajout_debut(premier(l),l2), reverse(reste(l);;

est_seq_vide(l) permet de savoir si une liste l est vide ou pas, ajout_debut(a,l) ajoute un élément a au début d'une liste l et premier(l) isole le premier élément d'une liste.
Ma question est simple : j'aimerais, comme vous pouvez le voir, que ma section "else" fasse deux choses en même temps, à la fois faire ajout_debut(premier(l),l2) et à la fois reverse(reste(l) (algorithme réccursif azi tavu)
Bref, mettre une virgule comme je l'ai fait ne semble pas suffir, CamL me renvoie une erreur syntaxe sur... Les ;; à la fin --' Si quelqu'un s'y connait un peu en CamL et est capable de me dire comment faire pour qur mes deux trucs se fassent en même temps, je suis preneur :)
Merci d'avance pour vos réponses !

1 réponse

  1. Modérateur
    Bonjour,

    "comment faire pour qur mes deux trucs se fassent en même temps"
    Tu devrais utiliser une structure begin/end.

    let rec reverse l =
    if (est_seq_vide l)
    then l2
    else begin
    ajout_debut ((premier l), l2);
    reverse (reste l);
    end;;

    Remarque : en Caml on utilise plutôt le paradigme fonctionnel, donc les structures if/then/else sont généralement à bannir, car elles sont issus du paradigme impératif.
    En fonctionnel, il faudrait plutôt utiliser des structures de pattern matching. Exemple :

    let rec reverse = function
    | [] -> []
    | a::b -> (reverse b)@[a];;

    reverse [1; 2; 3; 4; 5];;
    La confiance n'exclut pas le contrôle
    0
    1. Merci beaucoup ! Par contre pour la deuxième partie tu es rentré dans des trucs que je ne sais pas faire, on commence tout juste à voir ce que c'est que le patern matching, alors un truc comme ça... o0
      0

Discussions similaires

caml

4 réponses