Есть json такой args : [{msg : "Привет"}, {roome : "Курилка"}]
Чтобы десериализовать(получить полезные данные) в F#, нужно либо использовать объединение типов
и использовать FSharp.SystemTextJson.
либо делать два независимых типа msg и room и десериализовать дважды.
Особый профит получаем от атрибута CLIMutable — теперь наш type Msg легко проглотит данные Room и наш клиент выпадет с NRE.
УРА!
При этом в clojure (ДиНаМиКа!!!!) все делается 3-мя строчками:
(def js (json/read-str "[{ \"msg\" : \"Привет\"}, { \"room\" : \"Курилка\"}]":key-fn keyword))
; [{:msg "Привет"} {:room "Курилка"}]
(filter (fn [e] (:msg e)) js)
;({:msg "Привет"})
(filter (fn [e] (:room e)) js)
; ({:room "Курилка"})
Так почему мы все еще используем типы?