Por exemplo, na definição de -first
, temos:
(--first (funcall pred it) list))
Naturalmente, o significado de "it" é muito difícil de pesquisar ou pesquisar no manual.
Por exemplo, na definição de -first
, temos:
(--first (funcall pred it) list))
Naturalmente, o significado de "it" é muito difícil de pesquisar ou pesquisar no manual.
Respostas:
Na verdade, está bem ali no manual: https://github.com/magnars/dash.el#anaphoric-functions .
Se você estiver usando o lispy , comece com:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
e o ponto anterior (--map
, você pode pressionar xfpara ligar lispy-flatten
e obter:
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
É um pouco mais complexo com esse código, pois o dash está ansioso demais para delegar e adiar:
(--reduce (max it acc) '(1 2 3 4))
Depois 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))))
Depois 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))))
Depois 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 dizer que it
é o var iterável implícito e acc
é o var acumulador implícito.
Em um ponto, tentei adicionar um pequeno patch lambda ao Emacs que habilitaria essa notação, que eu acho que é mais simples que as macros anafóricas:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
No entanto, meio que não foi a lugar nenhum.