有沒有方法可以在Chicken方案中確定運行時當前是否定義了變量?如何確定雞計劃中是否存在變量?
(let ((var 1))
(print (is-defined? var)) ; #t
(print (is-defined? var)) ; #f
編輯:XY問題。
我在寫一個生成代碼的宏。這個生成的代碼必須以相互遞歸的方式調用宏 - 讓宏自己調用它本身不起作用。當遞歸調用宏時,我需要它的行爲與初始調用時不同。我會使用嵌套函數,但是......這是一個宏。
粗糙例如:
(defmacro m (nested)
(if nested
BACKQUOTE(print "is nested")
BACKQUOTE(m #t)
(是的,我知道方案不defmacro使用,但我從Common Lisp的未來我也似乎不能把反引號在這裏沒有這一切會。 )
我不希望宏的INITIAL調用採用額外的參數,只有遞歸調用時纔有意義。我想通過其他方式知道它。
我可以獲取生成的代碼來調用嵌套在第一個宏中並且不存在於呼叫站點的宏嗎?例如,生成調用(,other-macro)
而不是(macro)
的代碼?
但是這不應該工作,因爲宏是不是一流的物體,像功能...
這你應該知道在編譯時間/寫入時間。 XY?計劃如何處理它? – Sylwester
我已經爲我的問題添加了詳細信息。 –