Difference setq et assoc

Résolu/Fermé
yogis Messages postés 3 Date d'inscription lundi 7 mars 2016 Statut Membre Dernière intervention 11 mai 2016 - Modifié par yogis le 11/05/2016 à 00:19
 Goupil - 24 mai 2016 à 16:46
Bonjour,

Etant débutant en lisp, je suis confronté à un problème avec la fonction assoc.

Voici les 2 parties de code:

(setq values '((x . 100) (y . 200) (z . 50)))
(assoc 'y values)

Ce code là marche sans problème (en même temps c'est celui de l'exemple sur la fonction assoc http://www.lispworks.com/documentation/HyperSpec/Body/f_assocc.htm#assoc)


(setq FrAng '(((poisson) fish) ((chat) cat) ((chien) dog)))
(assoc 'chat FrAng)

Ce code là ne marche pas, je m'attendais à avoir cat.

Pouvez-vous me dire où se trouve mon erreur?
Existe-t-il une notion de case-sensitivity sur les mots-clés genre "CHAT" et non chat?
Quelle est la différence entre mes 2 déclarations de setq?

Merci d'avance pour votre aide.

1 réponse

Salut

Tu as une liste dans une liste.
La déclaration devrait être
(setq FrAng '((poisson fish) (chat cat) (chien dog)))

Ensuite, tu utilises le ' (quote) pour appeler ta valeur. Ce n'est pas nécessaire car un quote est là pour éviter d'évaluer l'argument qui suit.
Par exemple : (setq a "toto")
(setq b 'a) --> A
(setq b a) --> "toto"

@+
0