Misalnya dalam definisi yang -first
kita miliki:
(--first (funcall pred it) list))
Secara alami arti "itu" sangat sulit untuk dicari di google atau manual.
Misalnya dalam definisi yang -first
kita miliki:
(--first (funcall pred it) list))
Secara alami arti "itu" sangat sulit untuk dicari di google atau manual.
Jawaban:
Sebenarnya itu ada di sana dalam manual: https://github.com/magnars/dash.el#anaphoric-functions .
Jika Anda menggunakan lispy , mulai dengan:
;; anaphoric version
(--map (* it it) '(1 2 3 4))
dan poin sebelumnya (--map
, Anda dapat menekan xfuntuk menelepon lispy-flatten
dan mendapatkan:
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
Ini sedikit lebih rumit dengan kode ini, karena tanda hubung terlalu bersemangat untuk didelegasikan dan ditunda:
(--reduce (max it acc) '(1 2 3 4))
Setelah 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))))
Setelah 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))))
Setelah 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))))
Cukuplah untuk mengatakan, itu it
adalah var iterable implisit dan acc
adalah akumulator var.
Pada satu titik, saya mencoba menambahkan tambalan lambda pendek ke Emacs yang akan memungkinkan notasi ini, yang menurut saya lebih sederhana daripada makro anaforis:
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
Namun, itu tidak berhasil.