cost 109 ms
為什么循環內的宏在 Elisp 中只展開一次?

[英]Why does a macro inside a loop only expand once in Elisp?

假設我定義 並運行 output 是 為什么是這樣? 我期待看到 3 個hello s。 這是因為,根據手冊, while特殊形式首先評估其條件,如果評估為非零,則評估其主體中的 forms。 由於條件適用於i的三個值,我希望對(macro-print i)表單進行 3 次評估。 每次擴展時,它 ...

宏擴展在 Lisp 中實際上是如何工作的?

[英]How does macroexpansion actually work in Lisp?

我想更詳細地解釋宏擴展是如何工作的,至少在 Emacs Lisp 中,但對其他 Lisp 的概述將不勝感激。 我通常看到它解釋的方式是宏的參數未經評估地傳遞給主體,然后執行並返回一個新的 LISP 形式。 但是,如果我這樣做 我希望 首先擴展到 然后最后到(print "yes") ,但 ...

Lisp - “list 'if xy nil” 打勾 (') 符號和“list” function 的用法是什么?

[英]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 在 progn 上使用 apply 以獲取函數列表

[英]Elisp use apply on progn for list of functions

我是一個新的 emacs 用戶。 並嘗試編寫一些 Elisp 來更好地學習這個軟件。 雖然我遇到了一些問題。 我想在progn上使用apply按progn運行函數列表。 但我得到如下錯誤。 我很困惑,需要一些幫助來告訴我如何在 Elisp 中實現這一點,謝謝。 (progn (+ 1 1) ...

如何防止 macroexpand-all 跳過列表中的第一個表單?

[英]How to prevent macroexpand-all to skip first form in list?

我正在嘗試擴展嵌套列表結構中的所有宏。 macroexpand-all 幾乎可以工作,但跳過(不展開)每個嵌套列表中的第一種形式。 我將其用作 org-agenda-custom-commands 的模板機制。 我可以通過宏為多個議程命令生成議程塊。 這是在 init.el (emacs26.2 ...

可以定義未命名的宏嗎? (“ lambda”宏?)

[英]Is defining unnamed macros possible? (“lambda” macros?)

我的目標是在編譯時評估一個表達式,例如一些簡單的事情,如(+1 1)。 但是,我希望編譯一個整數“ 2”,而不是在運行時完成一個完整的“ 1 + 1”運算,而不使用命名宏 。 這使我的源代碼更加清晰,顯示了如何獲得值“ 2”,同時又不浪費CPU時間重復相同的“ 1 + 1”操作。 這是說明 ...

Emacs Lisp宏不會擴展列表

[英]Emacs Lisp Macro Does Not Expand Alist

這是我的宏,應該做的是用vars-alist綁定將一個body包裝在let 當我查看它擴展為使用以下代碼時 我收到一個錯誤cons: Wrong type argument: sequencep, my-vars-alist 但是檢查它(sequencep my-vars- ...


排序:
質量:
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM