0
在Clojure編譯時創建一組相互共享信息的宏的最佳方式是什麼?在宏之間傳遞狀態
我正在尋找某種方式讓宏知道以前的宏做了什麼,並相應地採取行動,例如,你將如何實現,可以像下面這樣使用宏:
(macro-block-with-data ["A" "B" "C"]
(process-next-data-item) ; macro expands using "A"
(process-next-data-item) ; macro expands using "B"
(process-next-data-item)) ; macro expands using "C"
澄清
- 這需要與宏在編譯時發生,即不與普通功能在運行時
我可能不明白的問題不夠好。在我看來,似乎你想'(map process-next-data-item [「A」「B」「C」])''。所以如果沒有,也許你可以稍微澄清一點。 – 2011-07-02 14:59:06
@kwbeam - 不適合賬單,因爲a)它需要在編譯時和b)一般情況下,代碼不會是一個簡單的映射操作,因爲每個進程之間可能有很多其他代碼 - 數據項調用和c)數據可能是任何東西(例如宏展開次數的計數器),而不僅僅是一個序列。 – mikera