cost 143 ms
是否有類似 LOOP 的宏迷你語言的模式?

[英]Is there a pattern for LOOP-like macro mini-languages?

我正在嘗試回答以下練習。 編寫一個宏 function OUR-IF 來翻譯下面的宏調用。 我的解決方案如下: 效果很好,但我對此並不完全滿意。 “then”和“else”沒有語法檢查 arguments。Then 可以是任何東西。 如果我為“else”給出了錯誤的符號,我就會得到錯誤的行為。 ...

如何重寫這個 Common Lisp 宏來避免反引號?

[英]How to re-write this Common Lisp macro avoiding the back-quote notation?

我正在嘗試通過Common Lisp: A gentle introduction to Symbolic Computation這本書來學習 Common Lisp。 此外,我正在使用 SBCL、Emacs 和 Slime。 在上一章的宏中,作者給出了重寫內置incf宏的例子。 他用兩種不同的方 ...

在 Scheme 中生成 cond(測試表達式...)

[英]Generating cond's (test expression ...) in Scheme

我已經使用 Guile 大約一年了,但在 Scheme 中使用宏的經驗相當缺乏。 盡管我有一些更復雜的示例可以令人滿意地工作,但我仍然堅持(對我而言)感覺像是一個非常簡單的用例,類似於簡單的替換,類似於在 C 中使用#define可以實現的。 我有一個 function 使用cond來測試幾個條件 ...

如何在球拍中看到擴展的宏?

[英]How can I see expanded macros in racket?

我得到了這個答案https://stackoverflow.com/a/70318991關於編寫一個簡單的宏來記錄宏擴展時的時間,然后總是返回那個時間。 它工作得很好,但是現在有沒有一種簡單的方法可以在不評估的情況下查看(macro-expansion-seconds)的擴展版本? (用於調試更 ...

尋找一個非常簡單的球拍宏示例

[英]looking for a really simple racket macro example

我這樣做了: 這是做什么的 它在擴展時將(macro-expandsion-seconds)替換為(current-seconds) ,並且每次仍然評估該形式。 但是我如何讓它在擴展時評估(current-seconds) ,然后這樣做呢? 我知道在這種情況下我可以這樣做 和這個 (名字不再有意義 ...

在 SBCL Common Lisp 實現中宏擴展何時以及多久發生一次?

[英]When and how often do macro expansions happen in SBCL Common Lisp implementation?

一些 Lisp 實現 (i) 展開一次宏並保存結果以供重用; (ii) 其他人在每次宏調用時重新展開宏。 某些實現 (iii) 甚至嘗試在 function 被 DEFUN時擴展function 主體中的宏調用。 SBCL 屬於哪一種情況? 謝謝。 ...

lambda 表達式是 Common Lisp 中的宏還是標記?

[英]Are lambda expressions macros or markers in Common Lisp?

我正在嘗試通過Common Lisp:符號計算的簡單介紹一書來學習 Common Lisp。 此外,我正在使用 SBCL、Emacs 和 Slime。 在第 7 章中,作者對lambda expressions提出以下建議: 這讓我很困惑,因為 SBCL 的 REPL 返回: 顯然,作者使用了L ...

從 plist 宏體中提取和執行閉包/lambda

[英]Extracting and executing a closure/lambda from a plist macro body

我正在嘗試創建一個應該像這樣使用的宏( bar ): 宏基本上應該只是 FUNCALL lambda 並考慮到 MY-VAR。 我想出的是: 這有效,它打印“foo”。 但我想知道這是否是這樣做的,或者是否有更好的方法來做到這一點。 ...

Common Lisp 執行表達式作為宏中的參數

[英]Common Lisp Execute expression as parameter in macro

因此,使用 common lisp,我希望能夠執行以下操作: 結果打印 1 5 次。 我不想簡單地直接調用 (print 1),而是通過宏參數傳遞表達式並通過宏調用它。 換句話說,宏 foo 應該處理任何表達式作為輸入並運行它。 這種情況似乎不起作用。 編輯以闡明明確的腳本和預期的 function ...

在 defmacro 中使用循環

[英]Using loop inside defmacro

我正在學習(普通)Lisp,作為練習,我想實現'xond',一個cond宏,它可以改變這個愚蠢的例子: 進入 if-else 鏈: 目前,我有這個宏: 只是擴展x中的前兩項: 生產 現在我想處理x中的所有項目,所以我添加了一個loop來生成一個 if-serie(邁向 if-else-version ...

Common Lisp 本地影子 function 同名

[英]Common Lisp locally shadow function with same name

我以前不止一次有過這個問題。 一般問題是否可以使用同名f的包裝器透明地本地隱藏 function f ? 即,如何在本地將 (f Wrapped-args...) 擴展為 (f args...)? Flet 似乎讓我們這樣做,但有局限性,即生成的包裝器不是可設置的。 是否有可能在不訴諸弗萊特的情況 ...

Scheme中的letrec-syntax和let-syntax有什么區別?

[英]What is the difference between letrec-syntax and let-syntax in Scheme?

有類似的問題,但沒有語法宏,但我認為不同之處在於一個宏看不到另一個,如 letrec 和 let 函數。 但這與 letrec-syntax 和 let-syntax 相同 你能展示這兩個宏/語法不同的代碼示例嗎? 編輯: 發現這個: 這不適用於let-syntax並且它適用於letrec-syn ...

如何在 Lisp 的宏中修復“X 不是數字”

[英]How do I fix the “X is not a number” in my macro in Lisp

我開始學習 lisps,目前正在為學校開發宏。 我在一個名為 decrement.txt 的 txt 文件中創建了一個名為“-=”的簡單宏 所以傳遞的參數是 numericValue(將被遞減的值)和 decrementValue(numericValue 將被遞減的數量) 當我在 CLISP(即 ...

在 Scheme 中處理 lisp 宏中引用符號的標准方法

[英]Standard way to handle quoted symbol in lisp macros in Scheme

對於我正在工作的一些代碼,我需要在宏中處理 'x 。 處理這些值的標准方法是什么? 我有這樣的代碼: 這是應該如何處理,還是只是在宏中不使用帶引號的符號? 注意:我不是問衛生宏(我問的是真正的 lisp 宏),所以請不要回答衛生宏。 編輯: 我的宏在 Guile 和 BiwaScheme ...

clojurescript 中的宏 - 無法正確展開

[英]macros in clojurescript - does not expand properly

我在 clojure 中創建了一個宏 在 clojure repl 中它按預期工作 所以我創建了一個這樣的 clojurescript 模塊來嘗試使用它: 當我在repl中嘗試時,我得到了這個 同時回到 clojure,有一個線索為什么這可能是 我可以創建以'(而不是(list ) 開頭的宏。但是, ...

lisp 宏來構建表達式列表及其評估

[英]lisp macro to build a list of an expression and it's evaluation

我正在嘗試在 Common Lisp 中編寫一個宏,它接受任意數量的表達式並構建一個列表,其中包含每個表達式,然后在一行中對其進行評估。 例如,如果我將宏命名為 我跑 我希望它返回: 到目前為止,我能做的最好的事情是使用代碼獲取表達式列表 ...

引用宏定義宏

[英]Quoting in macro-defining macro

我正在嘗試編寫一個宏來定義數組結構數據結構的一些幫助程序(基於此代碼段)。 在該宏中,我定義了另一個宏,它有助於遍歷 struct 中的所有槽值。 問題是我無法使雙重取消引用正常工作。 這是代碼:(defmacro defcomponent (name-and-options &body s ...

這個反引用“語法”如何在lisp中運行?

[英]How this backquote “syntax” works in lisp?

這是Paul Graham出版的On Lisp一書的簡化示例(類似語法的方案)。 我知道怎么樣,,@y應該工作但不確定如何,',z應該工作應該首先評估什么,以什么順序。 (我知道它應該評估為符號foo,因為它在guile中返回(10 (foo 1 2 3)) ,但我不確定究竟是什么步驟 ...

如何在JavaScript中自定義LISP中編寫宏擴展

[英]How to write macro expand in custom defined LISP in JavaScript

我有一般的問題我應該如何去創建適當的宏擴展函數或宏。 這是我在LIPS解釋器中的宏的定義(你可以在這里測試它https://jcubic.github.io/lips/ ) 問題是,這是虛擬宏擴展而忽略了有關變量的錯誤,所以它不能評估宏的quasiquote,因為它拋出了無法找到變 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM