タグ付けされた質問 「mapping」

5
プロパティリストに関数をマッピングしますか?
Q:プロパティリスト全体で関数をマップする慣用的な方法は何ですか? さまざまなマッピング関数(mapcarおよびファミリ)は、リストなどのシーケンスに関数をマッピングします。プロパティリストを扱うとき、つまりリストに含まれる各プロパティ(最初の要素から始まる他のすべての要素)をマップしようとするとき、これらの関数をどのように使用しますか?マッピング関数は、個々の要素としてではなく、要素のペアでリストにアクセスする必要があるように思えます。 おもちゃの例として、プロパティリストを取得してすべてのプロパティ値を収集する方法を教えてください。代わりに関連付けリストである場合、それは非常に簡単です。 (mapcar #'cadr '((:prop1 a) (:prop2 b) (:prop3 c))) ;=> (a b c) ループを使用してこれを実行できると確信していますが、少し面倒で、もっと慣用的な方法があるのではないかと思っています。
17 elisp  mapping 


3
バッファの各行を読み取って行ごとに処理する慣用的な方法はありますか?
Pythonでは、次のようにして、ファイルを1行ずつ処理します。 with open(infile) as f: for line in f: process(line) elisp(ファイルの代わりにバッファを使用)で同じことを行う方法を調べようとしたところ、明確な方法が見つかりませんでした。 (私が最後にしたいのは、2つの順序付けられた行のデータ構造です。1つはすべての行が正規表現に一致し、もう1つは一致しなかった行を含みます。)
11 mapping 

1
プロパティで照合する場合のorg-map-entriesの高速化
質問:org-map-entriesプロパティマッチングが非常に遅いのはなぜですか、それを高速化するにはどうすればよいですか? 背景:私は比較的単純な用途がありorg-map-entriesます:タグgoalと特定の優先順位(例:)を持つすべての組織アジェンダエントリから(整数分で)作業を取得しますB。 (org-map-entries #'hw-org-get-effort-in-minutes "goal+PRIORITY=\"B\"" 'agenda) これはひどく遅く、私の〜12,000行の議題ファイルに1分以上かかります。 ただし、PRIORITYフィルターからを削除してgoalsタグ付きアイテムを選択すると、ほぼ即座に完了します。 のようにフィルターを設定することもできますが、フィルターはgoal/DONE非常に迅速に完了しますが、私がそのようなgoals+EFFORT>0ことをすると、1分以上かかるようになります。一般に、プロパティのマッチングは非常に遅いようです。 私はチートの回避策を見つけました:を使用して、マップされた関数内のプロパティを非常にすばやく一致させることができますorg-entry-get。これを実行すると、実行は1秒未満です。これはばかげているようですが、うまくいけばもっと良い方法があると思いますが、少なくともそれはうまくいきます! すでに試してみました:(benchmark 1000 (hw-org-effort-to-minutes "1:20"))戻るので"Elapsed time: 0.000019s"、私の機能はあまり貢献していないと思います。 によるとprofiler、CPU時間の最大40%がによって使用されcond、最大29%が要素の解析に起因しています(org-element--current-element)。次の2つの最大の寄与は14%と13%であるため、40%がcond問題の大部分を占めているようです。ヘッダー(タグ、TODO)とヘッダー+ボディ(プロパティ)の解析のみが異なる場合を除き、プロパティマッチャーを使用して要素の解析がより頻繁に行われる理由がわかりません。

3
複数の引数を持つ関数にmapcarを適用する方法
packagesgithubユーザーとパッケージ名のリストを持つ変数があります。 (defvar packages '('("auto-complete" . "auto-complete") ("defunkt" . "markdown-mode"))) git cloneファイルがまだ存在しない場合、私はしたいです。 (defun git-clone (author name) (let* ((repo-url (concat "git@github.com:" author "/" name ".git"))) (print repo-url) (unless (file-exists-p (concat "~/.emacs.d/git/" name)) (shell-command (concat "git clone " repo-url " ~/.emacs.d/git/" name))))) リストgit-cloneするすべてのパッケージ変数に適用したいと思いますpackages。しかし、私は議論を適用する方法を理解することができませんでした。 ; This obviously doesn't work (mapcar `git-clone `packages)
8 mapping 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.