public function traverse(callable $transformation)
{
return f\foldr(function ($ys, $x) use($transformation) {
$functor = $transformation($x);
return $functor->map(f\append)->ap($ys ? $ys : $functor::of([]));
// https://github.com/widmogrod/php-functional/issues/30
}, false, $this);
}