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 :

Récursivité sur plusieurs fonctions


Sujet :

Caml

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut Récursivité sur plusieurs fonctions
    Bonsior tout le monde,

    j'ai une fonction apply_rec qui appelle trans_union, trans_concat et trans_repet. Ces trois fonctions appellent en retour apply_rec.

    J'ai bien mis des rec devant ces fonctions, mais j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File "Thompson.ml", line 42, characters 16-27:
    Unbound value trans_union
    (dans le code source trans_union est après apply_rec et l'erreur ligne 42 est bien dans apply_rec).

    Bref, comment faire de la récursivité sur plusieurs fonctions ?

    D'avance merci,

    Tangui

  2. #2
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    La récursion mutuelle se fait avec let rec ... and ...
    Un exemple tiré de mon tutoriel :
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let rec eval (b: bitboard ) n =
      if n = 10 then Tie
      else eval_list (play_moves b) (succ n)
    and eval_list l n =
      let rec loop l acc =
        if acc = Second then acc
        else match l with
        | [] -> acc
        | h::t ->
           ( match eval h n with
           | First  -> Second
           | Second -> loop t acc
           | Tie    -> loop t Tie )
      in loop l First;;

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    En effet ça marche, bien qu'un bug à un autre endroit me faisait croire que non.

    Merci et désolé pour le dérangement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour passer une variable sur plusieurs fonctions
    Par pierre3401 dans le forum Général Python
    Réponses: 3
    Dernier message: 13/11/2013, 11h14
  2. Lancer plusieurs fonctions JavaScript sur même evenement
    Par davinout dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2010, 17h37
  3. Fonction de calcul sur plusieurs lignes
    Par babsy dans le forum SQL
    Réponses: 1
    Dernier message: 13/11/2007, 11h34
  4. Réponses: 9
    Dernier message: 11/09/2007, 10h08
  5. Fonctions sur plusieurs tables jointes
    Par enlaan dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/09/2006, 14h30

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