Thu May 31 13:23:12 EDT 2018
Free seems to be genuinely useful, but I'm having a hard time getting
used to the interface.
I want to monadically iterate over the leaf nodes, but each time we're
going one level deeper I want to inspect that node and take some
monadic action before continuing descend.
Proably liftF and retract?
Simplified: I want to look at each Free Functor node.
iterM :: (Monad m, Functor f) => (f (m a) -> m a) -> Free f a -> m a
I don't get it. Simpler example.
Ok this can be used for creating bindings, where a instance is
replaced by a reference that can be incorporated in another node.
What I need is the other way around: for each leaf node, I want to
accumulate its contents.
I.e. I want to look at the tag of the list first.
Ok, that's it.