Je debute en elisp et j'ai un peu de mal sur les a-lists (ref http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html) dont j'ai besoin pour utiliser bindat.el.
Voici une a-list que je defini:
(setq myalist '((a . 1)
(b . 2)
(c . (+ 2 3))))
Le probleme, c'est qu'en l'evaluant, j'ai :
((a . 1) (b . 2) (c + 2 3))
Alors que ce que je voudrais, c'est :
((a . 1) (b . 2) (c 5))
Un peu etonnant... Je dois rater quelque chose de gros.
Merci de votre aide !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas Richard
writes:
Bonjour,
Je debute en elisp et j'ai un peu de mal sur les a-lists (ref http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html) dont j'ai besoin pour utiliser bindat.el.
Voici une a-list que je defini:
(setq myalist '((a . 1) (b . 2) (c . (+ 2 3))))
Le signe ' (single quote) indique que la suite est "quotée", c'est-à-dire simplement lue sans être évaluée, et une liste est retournée.
Si tu veux évaluer des morceaux, tu peux faire ceci : (setq myalist `((a . 1) (b . 2) (c . ,(+ 2 3)))) le signe ` (backquote) est une macro qui agit comme une quote, sauf lorsqu'une virgule apparait. Voir (info "(elisp) Backquote")
Tu peux aussi explicitement construire la liste~: (setq myalist (list (cons 'a 1) (cons 'b 2) (cons 'c (+ 2 3))))
-- Nico.
syl.roy@gmail.com writes:
Bonjour,
Je debute en elisp et j'ai un peu de mal sur les a-lists (ref
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html) dont j'ai
besoin pour utiliser bindat.el.
Voici une a-list que je defini:
(setq myalist '((a . 1)
(b . 2)
(c . (+ 2 3))))
Le signe ' (single quote) indique que la suite est "quotée",
c'est-à-dire simplement lue sans être évaluée, et une liste est
retournée.
Si tu veux évaluer des morceaux, tu peux faire ceci :
(setq myalist `((a . 1)
(b . 2)
(c . ,(+ 2 3))))
le signe ` (backquote) est une macro qui agit comme une quote, sauf
lorsqu'une virgule apparait. Voir (info "(elisp) Backquote")
Tu peux aussi explicitement construire la liste~:
(setq myalist (list (cons 'a 1) (cons 'b 2) (cons 'c (+ 2 3))))
Je debute en elisp et j'ai un peu de mal sur les a-lists (ref http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html) dont j'ai besoin pour utiliser bindat.el.
Voici une a-list que je defini:
(setq myalist '((a . 1) (b . 2) (c . (+ 2 3))))
Le signe ' (single quote) indique que la suite est "quotée", c'est-à-dire simplement lue sans être évaluée, et une liste est retournée.
Si tu veux évaluer des morceaux, tu peux faire ceci : (setq myalist `((a . 1) (b . 2) (c . ,(+ 2 3)))) le signe ` (backquote) est une macro qui agit comme une quote, sauf lorsqu'une virgule apparait. Voir (info "(elisp) Backquote")
Tu peux aussi explicitement construire la liste~: (setq myalist (list (cons 'a 1) (cons 'b 2) (cons 'c (+ 2 3))))
-- Nico.
syl.roy
Merci !
Le couple backquote/virgule fait mon bonheur !
J'avais fini par trouver une troisieme solution en construisant tout explicitement avec des "acons". Mais c'est beaucoup moins joli que tes solutions: