public static function test(callable $assertEqual, callable $f, callable $g, Functor $x)
{
// identity: fmap id == id
$assertEqual(f\map(f\identity, $x), $x, 'identity');
// composition: fmap (f . g) == fmap f . fmap g
$assertEqual(f\map(f\compose($f, $g), $x), call_user_func(f\compose(f\map($f), f\map($g)), $x), 'composition');
}