我正在Clojure中設計一個用於驅動代碼生成器的DSL(在這種情況下用於過程圖像合成 - clisk),並且在處理中間值的最佳表示時遇到問題。Lisp/Clojure DSL的中間表示形式
最初,DSL由返回一個或多個表單的功能組成,例如, (說明性的)
(v+ 1.0 [1.0 'y])
=> ['(+ 1.0 1.0) '(+ 1.0 y)]
然後可以組合這些函數來構建更大的代碼塊。
這很簡單,生成的表單可以直接送入代碼生成器。不過,我現在已經確定了這種方法看起來有些弱點,例如,如果需要傳遞一些輔助數據(例如,無法像BufferedImages這樣的表單編碼的對象,對優化有用的元數據等)。
我確定這是Lisp世界中的一個已解決的問題 - 通常這種DSL的最佳中間表示是什麼?
非常感謝 - 只是那種洞察力我一直在尋找的! – mikera