Zum Beispiel in der Definition von haben -first
wir:
(--first (funcall pred it) list))
Natürlich ist die Bedeutung von "es" sehr schwer zu googeln oder im Handbuch zu suchen.
Zum Beispiel in der Definition von haben -first
wir:
(--first (funcall pred it) list))
Natürlich ist die Bedeutung von "es" sehr schwer zu googeln oder im Handbuch zu suchen.
Antworten:
Eigentlich ist es genau dort im Handbuch: https://github.com/magnars/dash.el#anaphoric-functions .
Wenn Sie lispy verwenden , beginnen Sie mit:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
und den Punkt zuvor (--map
können Sie drücken, xfum anzurufen lispy-flatten
und zu erhalten:
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
Mit diesem Code ist es etwas komplexer, da Dash zu eifrig ist, um zu delegieren und zu verschieben:
(--reduce (max it acc) '(1 2 3 4))
Nachher 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))))
Nachher 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))))
Nachher 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))))
Es genügt zu sagen, dass dies it
die implizite iterierbare Variable und acc
die implizite Akkumulator-Variable ist.
Irgendwann habe ich versucht, Emacs einen kurzen Lambda-Patch hinzuzufügen, der diese Notation ermöglicht, die meiner Meinung nach einfacher ist als anaphorische Makros:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
Es ging jedoch irgendwie nirgendwo hin.