IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Liste récursive ?


Sujet :

Caml

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 39
    Points
    39
    Par défaut Liste récursive ?
    Bonsoir,

    j'ai besoin d'une fonction capable de renvoyer en boucle un certain nombre de valeur.

    Plus précisément, ma fonction sera de type unit : elle permettra d'activer une texture précise dans la mémoire vidéo. Sauf que j'aimerais bien qu'elle soit capable de supporter les textures animées. Or une texture animée, c'est jamais qu'une succession de textures statiques, une succession qui revient à la première texture une fois qu'elle s'est achevée.

    J'avais pensé utiliser les listes récursives : un truc du genre :
    let rec tex_lst=texture1::texture2::texture3::tex_lst;;

    Ca me ferait donc légèrement changer le type de ma fonction : elle serait alors de type texture list->texture list, car elle activerait la texture en tête, renverrait la queue de la liste, et son prochain appel s'effectura avec la queue de la liste.

    Mais est ce que je ne risque pas de perdre des informations en procédant ainsi ? Si j'enlève la première texture, persistera t-elle dans la queue de la liste également ?

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Ben oui, étant donné que ta liste est cyclique ! C'est exactement une liste dont le dernier élément ne pointe pas vers la liste vide []... mais vers le début de la liste. De telles listes ne sont jamais modifiables... donc aucune crainte à avoir quant à ce genre de comportement. Lorsque tu retournes la queue d'une liste, ta liste reste en mémoire : elle n'est pas détruite (éventuellement, la tête est ramassée par le récupérateur de mémoire si elle ne peut plus être accessible depuis une racine) ; la seule chose que le programme fait est retourner l'adresse de l'élément d'après, que la liste soit cyclique ou non... c'est tout !
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 39
    Points
    39
    Par défaut
    Et pour les exploiter, il n'y a pas de contre indication spécifiques ?
    On filtre ça comme une liste classique ? Il n'y a pas de précautions à prendre pour éviter une récursion infinie ?

  4. #4
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Non, tout se passe comme d'habitude, à ceci près que les fonctions essayant de parcourir de telles listes ne doivent pas être écrites comme tu le fairais normalement (en effet, la liste vide [] n'existe pas ici)... par exemple, List.length ne fonctionne pas.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut peux on aller plus loin ?
    Intéressant, qu'est-ce qu'on peu faire d'une liste récursive as par récupérer sa tête ou lui en ajouter une ?

    qu'elle utilité pratique peux avoir une telle structure (sa m'as l'air d'être un outil élégant pour les algorithmes qui doivent accomplir une série d'action en boucle jusqu’à ce qu'une condition soit remplie mais y as t il d'autres application intéressantes ?)

    (par curiosité, exception faite des fonctions, des types et des listes, dans quoi peut-on mettre de la récursivité ? (et est-ce vraiment une bonne idée))

Discussions similaires

  1. [PrimeFaces] Tree et liste récursive
    Par luperrot dans le forum JSF
    Réponses: 3
    Dernier message: 21/11/2012, 10h16
  2. liste récursive des fichiers d'un dossier dans une liste
    Par identifiant_bidon dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2010, 16h33
  3. [ksh] Liste récursive des fichiers, au format CSV
    Par Neuromancien2 dans le forum Linux
    Réponses: 2
    Dernier message: 19/02/2008, 23h41
  4. Liste itérative ou récursive
    Par devstud dans le forum C
    Réponses: 11
    Dernier message: 04/01/2007, 17h07
  5. [Xul] l'élément tree: liste récursive et RDF
    Par TNorth dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2005, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo