four types to test monad laws