2016-04-12 17 views
7

對於宏來說,傳統的,行爲良好的方式表明它已通過無效參數?在defmacro中指出錯誤的常規方法是什麼?

(defmacro defthisthing [name & definitions] . . .) 

我正在寫一個宏,現在接受一大堆定義。如果相同的事情被定義兩次,宏應該抱怨。同樣,如果其中一個定義使用了一個在同一個宏調用中沒有定義的術語,宏應該抱怨,希望能夠使用行和列號,以便程序員可以準確地看到錯誤的位置。

目前,我正在想,拋出一個異常,是很有道理的,因爲無效的宏參數是實際上是一個編譯錯誤。如果編譯器發現不平衡的括號,所有內容都應該關閉。

如果這是正確的,什麼是傳統的例外拋出?你如何包含有問題的代碼片段的文件名和行號?

如果這不是正確的,什麼是更Clojurely的方法呢?

+0

這個問題似乎是因爲字作爲_conventional_或_Clojurely_指示要求的意見。這可以純粹基於幾乎沒有技術價值的觀點產生答案(_「我喜歡做'foo'的方式_...)。你能否請你的問題更專注於你想達到的技術方面?例如:_「如何報告從宏內傳遞的無效參數?_」 –

+0

想想_how_報告宏中的錯誤是沒有問題的 - 我可以想到很多方法。我想知道在Clojure中採用傳統的方法。 –

回答

相關問題