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.