何のために?


11

たとえば、次の定義で-firstは、

(--first (funcall pred it) list))

当然のことながら、「それ」の意味をグーグル検索したり、マニュアルで検索することは非常に困難です。


4
正確には、私たちが尋ねるべき質問、そして照応性のこれとそれに対する合理的な一般批判。ではEmacsの、(それは「自己文書エディタ」である)少なくとも、各ドキュメンテーション文字列照応thingieのは明らかにそれは(原文のまま)、それに慣れている人もに冗長なようであっても、それを呼び出し、さらにそれならばなければなりませんマニュアルに詳しく記載されています。(ちょうど1つの意見。)
Drew

回答:


10

実際にはそれはマニュアルにあります: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))

しかし、それはどこにも行きませんでした。


2
lispyを使用していない場合は、pp-macroexpand-last-sexpも有効です。
マラバルバ2015

その機能については知りませんでした。マルチラインには、私とは異なるアプローチを使用しています。
abo-abo 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.