Wednesday, April 20, 2022

variants

我之前去研究過 monad ,得到的心得是:「這個東西對我沒有什麼啟發性,因為我在 Clojure 裡,用 vector 或是用 map 就可以夾帶一些資訊了。」

然而,前兩天看了一個很久以前的 talk ,它在介紹 variants 這個概念。看完之後,我有了全新的觀點:不是這些 monad, variants 東西對我沒有用,是早就一直在使用了,或是被 library/DSL 半強迫地要我用了…。

https://www.youtube.com/watch?v=ZQkIWWTygio

這邊先做超快速地介紹:

(1) 什麼是 variants ?

[:tag value]

(2) 什麼是 recursive variants?

[:app [:op [:val 15]

               [:val 16]]]

基本上,hiccup 就算是一種 recursive variants。

(3) 誰用了 variants ?

Erlang 使用了 result variant 

Hiccup 也可以視為是使用 variant 

re-frame 也用了

還有很多時候,是該用,而沒有去用,所以就寫出爛 code 了