lisp-macros

    0熱度

    2回答

    我已經幾次閱讀了LOL的第6.7部分,但我仍然無法完全理解以下內容。 以前對外部代碼關閉的綁定現在已經公開供我們修改,即使這些綁定已編譯爲某種效率並早已將其存取符號遺忘了。 如果綁定符號基本上被編譯爲封閉環境中的指針,那麼如何將符號傳遞給已經編譯好的函數,並且函數能夠以某種方式比較符號? 我已經與pantest例子搞亂CLISP中,我可以看到我能夠改變這兩個acc和this內pantest。我可以

    1熱度

    2回答

    目前正在學習Common Lisp的,下面的彼得·塞貝爾的實用的Common Lisp(我在第11章,約集合),我有困難,瞭解背後的引擎蓋setf作品。 考慮以下表達式: (setf a 10) 我完全地理解如何解釋器可以:(1)檢索名爲a變量,和(2)改變它指向到10值。現在 ,我特定集合的情況下,例如列表,載體或哈希表,SETF也可以用來改變由收集包含的值。例如,用向量: (defpara

    3熱度

    2回答

    這裏是Lisp-rookie。 我的目標是定義一個宏,使得虛線alist的鍵可用作變量來訪問相應的值,因此名爲»let-dotted-alist«。所以,我想的是: (setq foo '((a . "aa") (b . "bb"))) (let-dotted-alist foo (message (concat a b))) ==> "aabb" 這是我能想出迄今

    0熱度

    1回答

    如何將符號名稱替換爲在宏中創建的函數?我想我在這裏錯過了一些明顯的東西。例如,我試圖與簽名的宏定義了一些類似於以下變量和函數, (cl-defmacro mac (pkg) (let ( ;; Define some variables (sym (intern (concat pkg "-file"))) (sym-def "default-file.

    0熱度

    1回答

    如何有條件地刪除在lisp宏中創建的defun中的let-binding?在這裏,我想從結果函數中刪除第一個允許綁定的變量,但是我遇到了一個問題,我在綁定中有一個nil,導致錯誤。 例如,生成的函數使用let或let*,並應根據arg刪除第一個變量賦值。但我寫它的方式來自nil替換var1問題。我不知道如何擺脫零。 (cl-defmacro mac (cmd &optional arg)