Pour [1;2;3;4;5]
, je veux revenir [[1;2;3;4;5];[2;3;4;5];[3;4;5;];[4;5];[5];[]]
OCaml - retourner une liste contenant les queues de cette liste
Je suis en train d'utiliser la bibliothèque de la liste mais je ne suis pas sûr comment. Jusqu'à présent, je sais que je dois utiliser List.tl pour obtenir la liste sans le premier élément
let rec tailsoflist (l : 'a list) : 'a list list =
match l with
[] -> [[]]
| x::xs -> l::(tails xs)
Je l'ai fait récursive, mais maintenant, je veux simplement utiliser la bibliothèque de la liste sans utiliser récursivité. EDIT: Désolé, ce que j'ai spécifié pour la fonction à retourner est incorrect. Juste mis à jour avec la sortie correcte.
Il n'y a aucune fonction dans le module 'Liste' qui présentera les queues d'une liste' l' à la fonction que vous lui transmettez, donc vous ne pouvez pas avoir "les queues de' l' ". Vous pouvez avoir des listes structurellement équivalentes aux queues de 'l' si vous acceptez de construire de nouvelles versions, par exemple avec' List.fold_right'. –
Notez que votre exemple de solution au problème que vous posez est incorrect selon votre question, par ex. '[1..4]' n'est pas une queue de '[1..5]'. Êtes-vous sûr de ne pas vouloir dire [2..5] 'etc.? –
@Pascal: Il n'est pas nécessaire de renoncer au partage des queues: enfilez simplement la liste d'origine dans le cadre du 'fold'. –