Por ejemplo en la definición de -first
tenemos:
(--first (funcall pred it) list))
Naturalmente, el significado de "it" es muy difícil de googlear o buscar en el manual.
Por ejemplo en la definición de -first
tenemos:
(--first (funcall pred it) list))
Naturalmente, el significado de "it" es muy difícil de googlear o buscar en el manual.
Respuestas:
En realidad está justo ahí en el manual: https://github.com/magnars/dash.el#anaphoric-functions .
Si usa lispy , comience con:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
y el punto anterior (--map
, puede presionar xfpara llamar lispy-flatten
y obtener:
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
Es un poco más complejo con este código, ya que dash está demasiado ansioso por delegar y posponer:
(--reduce (max it acc) '(1 2 3 4))
Despué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))))
Despué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))))
Despué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))))
Basta decir que esa it
es la var implícita iterable y acc
es el acumulador implícito var.
En un momento, intenté agregar un parche lambda corto a Emacs que habilitaría esta notación, que creo que es más simple que las macros anafóricas:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
Sin embargo, no fue a ninguna parte.