[英]Why does a macro inside a loop only expand once in Elisp?
假設我定義 並運行 output 是 為什么是這樣? 我期待看到 3 個hello s。 這是因為,根據手冊, while特殊形式首先評估其條件,如果評估為非零,則評估其主體中的 forms。 由於條件適用於i的三個值,我希望對(macro-print i)表單進行 3 次評估。 每次擴展時,它 ...
[英]Why does a macro inside a loop only expand once in Elisp?
假設我定義 並運行 output 是 為什么是這樣? 我期待看到 3 個hello s。 這是因為,根據手冊, while特殊形式首先評估其條件,如果評估為非零,則評估其主體中的 forms。 由於條件適用於i的三個值,我希望對(macro-print i)表單進行 3 次評估。 每次擴展時,它 ...
[英]How does macroexpansion actually work in Lisp?
我想更詳細地解釋宏擴展是如何工作的,至少在 Emacs Lisp 中,但對其他 Lisp 的概述將不勝感激。 我通常看到它解釋的方式是宏的參數未經評估地傳遞給主體,然后執行並返回一個新的 LISP 形式。 但是,如果我這樣做 我希望 首先擴展到 然后最后到(print "yes") ,但 ...
[英]Lisp - “list 'if x y nil” what is usage of the tick (') symbol and “list” function here?
我正在學習編程語言原則 class 教授談論使用 Lisp 的宏(精確,Elisp)。 但是,他沒有教我們如何寫這種語言。 因此,我正在努力學習自己。 但是,關於在 Lisp 中使用“tick”('),我有些不明白。 但是,我確實了解基本用途。 例如,如果我們有(cdr '(abc))它將給我們一 ...
[英]Elisp: defmacro with &body and &rest behave differently?
我認為&body和&rest應該表現相同,所以這讓我感到困惑: 為什么 elisp 堅持mbody在這里正好有兩個 arguments ? ...
[英]Elisp use apply on progn for list of functions
我是一個新的 emacs 用戶。 並嘗試編寫一些 Elisp 來更好地學習這個軟件。 雖然我遇到了一些問題。 我想在progn上使用apply按progn運行函數列表。 但我得到如下錯誤。 我很困惑,需要一些幫助來告訴我如何在 Elisp 中實現這一點,謝謝。 (progn (+ 1 1) ...
[英]How to prevent macroexpand-all to skip first form in list?
我正在嘗試擴展嵌套列表結構中的所有宏。 macroexpand-all 幾乎可以工作,但跳過(不展開)每個嵌套列表中的第一種形式。 我將其用作 org-agenda-custom-commands 的模板機制。 我可以通過宏為多個議程命令生成議程塊。 這是在 init.el (emacs26.2 ...
[英]How to give a list as arguments to a macro in elisp?
我想實現以下目標: 但是bind-keys *是這里的宏。 ...
[英]Is defining unnamed macros possible? (“lambda” macros?)
我的目標是在編譯時評估一個表達式,例如一些簡單的事情,如(+1 1)。 但是,我希望編譯一個整數“ 2”,而不是在運行時完成一個完整的“ 1 + 1”運算,而不使用命名宏 。 這使我的源代碼更加清晰,顯示了如何獲得值“ 2”,同時又不浪費CPU時間重復相同的“ 1 + 1”操作。 這是說明 ...
[英]Emacs Lisp Macro Does Not Expand Alist
這是我的宏,應該做的是用vars-alist綁定將一個body包裝在let 當我查看它擴展為使用以下代碼時 我收到一個錯誤cons: Wrong type argument: sequencep, my-vars-alist 但是檢查它(sequencep my-vars- ...
[英]How to use local variable in Elisp defmacro?
我在我的 emacs 配置文件中寫了一個 elisp 宏,但是如下所示,(intern (format "%s-display-table" name))被使用了幾次,我如何使用類似變量的東西來表示它? ...