Monday, April 11, 2022

Clojure macro 的妙用

何時該使用 Clojure macro 最適當的時機,一直是一個我覺得費解的問題。對我來講,macro 是一種 compiler plugin ,只有在 programming language 這個抽象層明顯不足的時候,才會用到。

終於,我找到了一個我覺得算是頗為合理的應用。在 antizer 這個 library 的 macro 應用,我覺得極為合理。

它應用的邏輯是這樣子:
要在 ClojureScript 使用 react ,比較好用的方式,是要使用 reagent component ,而不是直接使用 react component 。換言之,要先寫一點程式碼,先包一層。然而, Ant react library 裡卻有著大量的 react component 。所以要寫大量重複的程式碼。應用 macro 的話,就可以讓這些大量的程式碼只要寫一遍即可。