Making the move from Scala to Go
Looking through the really abstract scala code they linked brings up a problem that really frustrates me in haskell. Why doesn&#x27;t anybody document their really abstract code? You <i>know</i> it&#x27;s going to be confusing, so why not help out? If I have a type like<p><pre><code>    def foreignKey[P, PU, TT &lt;: AbstractTable[_], U] ...
</code></pre>
It&#x27;s not sufficient to document the function&#x27;s arguments. You also need to document the type variables! Likewise in haskell with code like<p><pre><code>    f . g x . (h (i x) $ j y z) . k $ aNamedVariable
</code></pre>
It really isnt&#x27; so hard to refactor that into<p><pre><code>    let descriptivelyNamedFunction = (h (i x) $ j y z)
        anotherDescriptivelyNamedVariable = descriptivelyNamedFunction . k $ aNamedVariable
     in f . g x $ anotherDescriptivelyNamedVariable
</code></pre>
It&#x27;s much larger, but in certain places it prevents so many headaches. It&#x27;s great that you can put stuff inline, but both communities seem super lax about accepting code that is the opposite of self-documenting.<p><i>edited for clarity, i hope</i>