Bonjour,
Je rencontre quelques problèmes quand j'essaie d'ajouter des éléments à des listes.
1) Un participant m'a dit hier qu'augmenter une liste par la méthode element::liste était mieux que par l'opérateur [element] @ liste. Il m'a dit précisément de regarder mon cours parce que cela devrait y être expliqué, mais rien n'y était ! (Notre cours de programmation fonctionnelle de première année est pour le moins laconique, ou du moins ne se penche aucunement sur la théorie, ce qui est pourtant un aspect passionnant de la programmation fonctionnelle.) Pourriez-vous éclairer ma lanterne ?
2) Je souhaite faire un petit bout de programme qui ajoute des éléments à une liste dans l'ordre naturel, c'est à dire de gauche à droite. Par exemple, quand on tape 3 puis 2 puis 1, la liste obtenue est [3; 2; 1]. J'ai essayé les trois méthodes possibles (que je connais du moins) :
a)qui évidemment, à l'entrée de 1, 2, 3 donne la liste [3;2;1] (je n'ai pas marqué ici la condition d'arrêt qui est element < 0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let rec ajoute_liste list = let element = read_int() in (ajoute_liste element::list)
b)qui fait pareil
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let rec ajoute_liste list = let element = read_int() in (ajoute_liste list @ [element])
et
c)qui bizarrement fait la même chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let rec ajoute_liste list = let element = read_int() in (ajoute_liste [element] @ list)
J'ai évidemment pensé à retourner la liste ainsi obtenue par une permutation ou en passant par une liste auxiliaire, mais n'y a-t-il pas une méthode plus directe et moins barbare ?
Amicalement,
endreillie
Partager