wrapStateTF :: (Monad m,Traversable w)=>StateT s m b -> StateT (w s) m b wrapStateTF s = StateT (\x -> fmap sequence $ sequence $ fmap (runStateT s) x)
wrapStateTF :: (Monad m, Traversable w) => StateT s m b -> StateT (w s) m (w b) wrapStateTF m = StateT \ss -> do results <- traverse (runStateT m) ss pure (fmap fst results, fmap snd results)