emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using gv in map and seq?


From: Stefan Monnier
Subject: Re: Using gv in map and seq?
Date: Thu, 18 Jun 2015 22:52:55 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

> You lost me :-)
> Could you explain a bit more?

Quelle partie?

gv-letplace prend une "place" est la transforme en un "getter" et un
"setter".  P.ex. si `map' est (nth 5 (foo)), gv-letplace va ajouter un
"(let ((x (nthcdr 5 (foo)))) ...)" et renvoyer la sexp "(car x)" comme
"getter" et la fonction (lambda (v) `(setcar x ,v)) comme "setter".

Ça doit être au tout debut du gv-expander, vu que l'évaluation de
(nthcdr 5 (foo)) doit avoir lieu une seule fois et avant l'évaluation de
`key', `default', etc...

Ensuite, on veut passer cette "place" à `alist-get' (pour éviter de
réinventer son fonctionnement), mais on peut plus utiliser `map' (qui
causerait une deuxième évaluation de (nthcdr 5 (foo)), et donc une
erreur) donc il faut synthétiser une place à partir de "mgetter" et
"msetter", et c'èst à ça que sert le `map--raw-place'.


        Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]