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

Scheme Discussion :

Utilisation du car


Sujet :

Scheme

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Utilisation du car
    j'utilise mal le car (qui prend le premier terme d'une liste) et on m'envoie l'erreur "car: expects argument of type <pair>; given ()" lorsque que je veux utiliser ma fonction remplaceliste et je ne comprend pas pourquoi. Du coup je ne peux pas regarder si ma fonction marche ou pas...

    voici la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ;;FONCTION REMPLACELISTE QUI REMPLACE TOUTES LA VALEURS DE LA LISTE1 PRESENTES DANS LA LISTE2 PAR UNE AUTRE VALEUR COMMUNE
    (define (remplaceliste liste1 valeur liste2)
      (if (elem? (car liste1) liste2) (remplaceliste (cdr liste1) valeur (remplace (car liste1) valeur liste2))
          (remplaceliste (cdr liste1) valeur liste2)))
              
                           
    ;;FONCTION REMPLACE QUI REMPLACE UNE VALEUR D'UNE LISTE PAR UNE AUTRE
    (define (remplace v1 v2 liste)
      (define (locale acc a b list1)
        (cond ( (null? list1) (inverse acc))
              ( (list? (car list1)) (locale ( cons (locale '( ) a b (car list1)) acc a b (cdr list1 ))))
              ( (eq? (car list1) a) (locale (cons b acc) a b (cdr list1)) )
              (else (locale (cons (car list1) acc) a b (cdr list1)))))
      (if (list? liste) (locale '() v1 v2 liste)))

  2. #2
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Utiliser car ou cdr sur une liste vide est une erreur.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    je ne l'utilise pas car sur une liste vide dans ma fonction remplaceliste, seulement dans remplace et cette derniere marche tres bien. Je ne vois pas comment je peux faire autrement.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    GnuVince a raison et le message d'erreur le confirme.
    Peux-tu donner le test qui t'envoie ce message d'erreur ?
    Tu as probablement une erreur dans la récursivité de remplaceliste

  5. #5
    Membre régulier Avatar de +Guilhem
    Profil pro
    Ingénieur d'études Java/JEE
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études Java/JEE

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 112
    Points
    112
    Par défaut
    1/ Tu te compliques la vie à faire une sous-fonction "locale" dans ta fonction "remplace".

    2/ Ta fonction "remplace" n'est pas bonne si la liste contient des sous-listes. Regarde les parenthèses...

    3/ Dans "remplaceliste" tu ne regardes jamais si "liste1" est null, donc forcément quand tu vas arriver au bout il va vouloir appliquer car, ce que tu ne peux pas faire sur une liste vide.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    merci, j'ai reussi a faire fonctionner la fonction.
    En fait j'avais fait une fonction locale parce que mes autres fonction ou j'utilisais "car" comportaient toutes une fonction locale (indispensable) donc je me suis betement dit que c'etait pour ça.
    Et voici ma fonction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ;;FONCTION REMPLACELISTE QUI REMPLACE TOUTES LA VALEURS DE LA LISTE1 PRESENTES DANS LA LISTE2 PAR UNE AUTRE VALEUR COMMUNE
    (define (remplaceliste liste1 valeur liste2)
      (cond ( (null? liste1) liste2)
            ( (elem? (car liste1) liste2) (remplaceliste (cdr liste1) valeur (remplace (car liste1) valeur liste2)))
            (else (remplaceliste (cdr liste1) valeur liste2))))

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/10/2010, 15h42
  2. Comment utiliser TQUERY car je viens de la découvrir
    Par chahinerue6 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2010, 08h02
  3. peut pas verrouiller table car déjà utilisée?
    Par romika dans le forum Access
    Réponses: 1
    Dernier message: 30/01/2007, 17h45
  4. [MySQL] Problème de connexion car mysql utilise un port non standard
    Par SsinedD dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/03/2006, 14h27
  5. Réponses: 7
    Dernier message: 15/11/2005, 10h14

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