実際にはそれはマニュアルにあります:https : //github.com/magnars/dash.el#anaphoric-functions。
更新:マクロの検査とフラット化
lispyを使用している場合は、以下から始めます。
;; anaphoric version
(--map (* it it) '(1 2 3 4))
とその前のポイント(--map
を押すxfと、電話をかけlispy-flatten
て取得できます。
;; anaphoric version
(mapcar (lambda (it) (* it it)) (quote (1 2 3 4)))
ダッシュはデリゲートして延期するにはあまりにも熱心なので、このコードでは少し複雑です。
(--reduce (max it acc) '(1 2 3 4))
後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))))
後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))))
後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))))
それit
は暗黙の反復可能変数でacc
あり、暗黙のアキュムレータ変数です。
ある時点で、この表記を有効にする短いラムダパッチをEmacsに追加しようとしました。これは、照応マクロよりも単純だと思います。
(map #(* % %) '(1 2 3 4))
(cl-reduce #(max %1 %2) '(1 2 3 4))
しかし、それはどこにも行きませんでした。