code: function constraintsRepr(
      constraints,    // :: StrMap (Array TypeClass)
      outer,          // :: String -> String
      inner           // :: String -> TypeClass -> String -> String
    ) {
      var $reprs = [];
      (sortedKeys (constraints)).forEach (function(k) {
        var f = inner (k);
        constraints[k].forEach (function(typeClass) {
          $reprs.push (f (typeClass) (stripNamespace (typeClass) + ' ' + k));
        });
      });
      return when ($reprs.length > 0)
                  (wrap ('') (outer (' => ')))
                  (when ($reprs.length > 1)
                        (parenthesize (outer))
                        (joinWith (outer (', '), $reprs)));
    }
docs: constraintsRepr :: ... -> String