wip, spin-off gists: https://gist.github.com/Icelandjack/e42495341f6029aad8c7e4e4a12c34ce
Monad gives Applicative, Applicative etc. gives Num, Floating, Fractional (regardless of actual subclass relationship)
WrapMonad tells us that a Monad implies Functor, Applicative
instance Monad m => Functor (WrappedMonad m)