fact: Fixpoint toFreeT `{Functor f} `{Monad m} `(ft : FreeTi f m a) : FreeT f m a := fun s k h => match ft with FT _ g z => y <- z ; match y with | Pure x => k x | Free fb => h _ (fun x => toFreeT (g x) _ k h) fb end end.
imports: Hask.Control.Monad