Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Caml] Probleme de concatenation

Sujet résolu
    7 décembre 2005 à 17:04:24

    Salut.

    Je cherche à trouver une liste de trajet sachant qu'un trajet est une string list à 2 elements.
    Mon probleme c'est que lorsque je rajoute 2 listes de trajets j'obtient une liste de liste de trajets ....

    C'est surement à cause de l'operateur :

    ::

    Mais je ne peut pas utiliser les autres operateurs car ils ne veulent pas partir de string list list mais de string list ... et je veux obtenir string list list et non string list comme ils me le propose :/

    Voici les fonctions à connaitre !

    (**********************************************************************************************)
    (***************************Enregistrement des différents types *************************)
    (**********************************************************************************************)



    type Ville = { nom:string ; villes_reliees:string list };;

    (***********************************************************************************************)
    (******* Trajets à partir des données (nom de la ville et villes reliées)******************)
    (***********************************************************************************************)





    let rec Trajet_2_Parametres (nom_ville,correspondances)=
            match correspondances with
                    tete::queue ->
            if queue = [] then
                    [nom_ville;tete]::[]
            else [nom_ville;tete] :: Trajet_2_Parametres (nom_ville,queue);;



    (***********************************************************************************************)
    (************************** Trajets à partir de la donnée ville ******************************)
    (***********************************************************************************************)



    let Trajet_ville (ville) =
            Trajet_2_Parametres (ville.nom,ville.villes_reliees);;



    (***********************************************************************************************)
    (************************** Trajets à partir de la donnée LC *******************************)
    (***********************************************************************************************)



    let rec Liste_tout_trajets (gare) =
            match gare with
                    tete::queue ->
            if queue = [] then
                    Trajet_ville (tete)::[]
            else Trajet_ville (tete)::Liste_tout_trajets (queue);;



    Voila voila, vous voyez donc que j'ai choisis d'utiliser des fonctions auxilliaires parce que je ne pouvais pas partir de la donnée gare alors que c'est impossé :)

    Pour info une gare est commposée de plusiseurs villes elles meme composé de leur nom et leurs villes reliees
    • Partager sur Facebook
    • Partager sur Twitter
      7 décembre 2005 à 19:20:21

      tu veux concaténer les listes, ou créer une liste de listes ?

      Pour concaténer c'est @ (list1 @ list2).
      Pour la liste de listes c'est :: ou ; : (list2::list1::[] ou [list1;list2]).
      • Partager sur Facebook
      • Partager sur Twitter
        7 décembre 2005 à 19:23:15

        Ben concatener :)

        Je vais tester les @ :)

        Merci encore

        J'avais tester concat, append et flatten ;)

        EDIT : ca marche nickel, par contre faut pas en abuser sinon on passe d'une string list list a une string list ;)


        Je commence a comprendre comment marche les operateurs sur les listes. Merci encore de m'apprendre toujours plus :p

        Et si tout vas bien je mettrai tout mon Projet en Pattern (ou filtrage de motif ;)) :D
        • Partager sur Facebook
        • Partager sur Twitter

        [Caml] Probleme de concatenation

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown