Par exemple dans la définition de -first
nous avons:
(--first (funcall pred it) list))
Naturellement, la signification de "it" est très difficile à rechercher ou à rechercher dans le manuel.
Par exemple dans la définition de -first
nous avons:
(--first (funcall pred it) list))
Naturellement, la signification de "it" est très difficile à rechercher ou à rechercher dans le manuel.
Réponses:
En fait, c'est juste là dans le manuel: https://github.com/magnars/dash.el#anaphoric-functions .
Si vous utilisez Lispy , commencez par:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
et le point précédent (--map
, vous pouvez appuyer sur xfpour appeler lispy-flatten
et obtenir:
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
C'est un peu plus complexe avec ce code, car dash est trop désireux de déléguer et de reporter:
(--reduce (max it acc) '(1 2 3 4))
Après xfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (--reduce-from (max it acc)
(car list-value)
(cdr list-value))
(let (acc it)
(max it acc))))
Après fjfxfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (let ((acc (car list-value)))
(--each (cdr list-value)
(setq acc (max it acc)))
acc)
(let (acc it)
(max it acc))))
Après fjxfM:
(let ((list-value (quote (1 2 3 4))))
(if list-value (let ((acc (car list-value)))
(let ((list (cdr list-value))
(it-index 0))
(while list (let ((it (car list)))
(setq acc (max it acc)))
(setq it-index (1+ it-index))
(!cdr list)))
acc)
(let (acc it)
(max it acc))))
Il suffit de dire que it
c'est la var itérable implicite et acc
la var accumulatrice implicite.
À un moment donné, j'ai essayé d'ajouter un court patch lambda à Emacs qui permettrait cette notation, qui je pense est plus simple que les macros anaphoriques:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
Cependant, cela n'est en quelque sorte allé nulle part.