module FourFunctor data FourFunctor y = Four y y y y traverseFourFunctor : Applicative f -> (x -> f b) -> FourFunctor x -> f (FourFunctor b) traverseFourFunctor constr f (Four w x y z) = pure Four <$> (f w) <$> (f x) <$> (f y) <$> (f z)