interface Functor t => Foldable t => Traversable t where
traverse : Applicative f => (a -> f b) -> t a -> f (t b)
A Traversable is a Functor + Foldable whose elements can be visited in order while running an Applicative effect, collecting the results back into the same shape. traverse f xs applies f to every element (each f x an effectful computation) and rebuilds the structure inside the effect.