Though the right comparison is<p><pre><code>   default &lt;T&gt; Extension&lt;T&gt; contraMap(Function&lt;T, S&gt; f)
   foldMap :: Monoid m =&gt; (a -&gt; m) -&gt; t a -&gt; m
</code></pre>
I also prefer the Haskell syntax, but it looks like more of a difference because the implementation is inline.