What bad things would happen if I try to force this to be true? I dont 
think this breaks the functor laws.

(let [trackable-f (fn [rv f] (f (deref rv)))]               ; stable ref
  (defn fmap [f rv]
    {:pre [(reactive? rv)]}
    ; (track (comp f deref) rv) -- unstable fn ref breaks optimizations
    (track trackable-f rv f)))


We implemented a few more of these almost category theory abstractions on 
track. We find them necessary for writing fully reactive apps. If we can 
make them compliant with cats typeclasses, a lot of operators will fall out 
for free. I am fuzzy on which exactly typeclasses we would be correct to 
implement, and what the consequences would be if they are "almost" correct 
but violate, for example, monad laws due to hidden side effects. Anyone 
thinking about this?

https://github.com/funcool/cats
http://funcool.github.io/cats/latest/#functor
https://en.wikibooks.org/wiki/Haskell/The_Functor_class#The_functor_laws

-- 
You received this message because you are subscribed to the Google Groups 
"Reagent-Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reagent-project+unsubscr...@googlegroups.com.
To post to this group, send email to reagent-project@googlegroups.com.
Visit this group at https://groups.google.com/group/reagent-project.
For more options, visit https://groups.google.com/d/optout.

Reply via email to