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

Lisp Discussion :

[Lisp][Débutant] Erreur incompréhensible "expected procedure"


Sujet :

Lisp

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut [Lisp][Débutant] Erreur incompréhensible "expected procedure"
    (Re)Bonjour,
    Encore un problème
    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
    16
    17
     
    ( define (addr ltc) 
       (cond ( (null? (cdr ltc) )  ltc)
             (else( 
                   (addr (
                          append (            
                           cons            
                           (                        
                            cons                                      
                            ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) )                                              
                            (cons (+ (car (cdr (car ltc) ) ) ( car (cdr (car (cdr ltc) ) ) ) ) ())                                                     
                           )                                            
                           ()                                       
                           )                                       
                          (cdr (cdr ltc) )                                  
                          ) 
                  ) ) ) ) <- probleme)
    Je suis désolé pour l'indentation , j'ai vraiment du mal à en trouver une claire pour ce langage.

    Ce programme fait l'addition des termes d'une A-liste et retourne une a-liste d'un seul terme
    Exemple :
    (addr '( ( 2 3)(3 6)(5 6)))
    retourne :
    ((10 15))

    Le programme s'exécute pas trop mal (il crée la liste finale) mais impossible de la retourner ! Le debugueur m'indique une erreur à la parenthèse indiquée.

    Dr Sheme indique :
    procedure application: expected procedure, given: ((10 15)) (no arguments)
    Merci à vous !

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Une parenthèse de trop ici
    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
    16
    ( define (addr ltc) 
       (cond ( (null? (cdr ltc) )  ltc)
             (else(  <=== ici parenthèse en trop la supprimer ainsi qu'une autre en bas
                   (addr (
                          append (            
                           cons            
                           (                        
                            cons                                      
                            ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) )                                              
                            (cons (+ (car (cdr (car ltc) ) ) ( car (cdr (car (cdr ltc) ) ) ) ) ())                                                     
                           )                                            
                           ()                                       
                           )                                       
                          (cdr (cdr ltc) )                                  
                          ) 
                  ) ) ) ) <- probleme)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    Merci !

    J ai vraiment bcp de problemes avec ces parenthese

    Maitnenant j aimerai ajouter un bout de code au precedent programme mais tjrs la meme erreur, je ne comprends vraiment aps comment place ces parenthses pourtt je vois bien le principe du langage
    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
    16
    17
    18
     
    (define (add p ltc lto lrc lro)
      (cond ( ( or (null? (cdr ltc) ) (>  ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) ) p ) )   
             ( (cond ( (> (car ( cdr (car ltc) ) ) ( car( cdr (car lrc) ) ) ) lto) 
                    (else lro ) ) ) )  
             (else
                     ( add p (
                           append (
                                   cons
                                       (
                                        cons
                                           ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) )
                                           (cons (+ (car (cdr (car ltc) ) ) ( car (cdr (car (cdr ltc) ) ) ) ) () ) 
                                       )
                                      ()
                                  ) 
                                  (cdr (cdr ltc) ) 
                           ) lto lrc lro )  ) ) )

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Tu pourrais donner un exemple de lancement pour pouvoir tester ?

    (add ? ? ? ? ?)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    Bien sur, desole j aurai du le faire tt de suite

    (add '15 '((12 3)(3 5)) '((12 3)(3 5)) '((13 3)) '(22 22))

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ton erreur est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (define (add p ltc lto lrc lro)
      (cond ( ( or (null? (cdr ltc) ) (>  ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) ) p ) )   
             ( (cond ( (> (car ( cdr (car ltc) ) ) ( car( cdr (car lrc) ) ) ) lto) 
                    (else lro ) ) ) )  <== parenthèse en trop, elle clot le premier cond.
    Utilises-tu DrScheme, son éditeur est bien pratique, il permet de voir la portée du parenthésage.

    Par contre, une fois corrigé, ta fonction ne donne rien, tu as une erreur d'ecriture de la fonction, qu'est-elle censée faire ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/11/2007, 13h28
  2. Réponses: 4
    Dernier message: 19/09/2007, 16h18
  3. Réponses: 2
    Dernier message: 23/05/2007, 11h02
  4. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31

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