Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre confirmé

    Inscrit en
    mai 2002
    Messages
    574
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 574
    Points : 280
    Points
    280

    Par défaut Error: (car) bad argument type

    Bonjour,

    Je m'initie à Scheme à partir des articles de Linux Magazine.

    J'ai réimplémenté memq comme ceci:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    (define (memq obj lst)
    	(if (eq? obj (car lst))
    		lst
    		(memq obj (cdr lst))))
    
    (display (memq 3 '(1 2 3 4 5)))
    (display (memq 6 '(1 2 3 4 5)))
    Mais j'obtiens une erreur :
    Error: (car) bad argument type: ()

    Call history:

    <eval> [memq] (memq obj (cdr lst))
    <eval> [memq] (cdr lst)
    <eval> [memq] (eq? obj (car lst))
    <eval> [memq] (car lst)
    <eval> [memq] (memq obj (cdr lst))
    <eval> [memq] (cdr lst)
    <eval> [memq] (eq? obj (car lst))
    <eval> [memq] (car lst) <--
    (3 4 5)

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Inscrit en
    septembre 2003
    Messages
    4 559
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 4 559
    Points : 5 478
    Points
    5 478

    Par défaut

    Tu ne geres pas le cas de la liste vide lorsque l'élément n'est pas trouvé.
    "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 : Intérieur avec jeune femme de Vilhelm Hammershoi

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •