   [typed, notTyped] = partitionMap typesUnify, validDefinitions
   # allDefs = join (setToArray typed), (setToArray notTyped)
   allDefs = concatMaps typed, notTyped # TODO: don't use object key ordering for ordering
-  values mapMap (__ prettyPrint, _type), allDefs
+  values mapMap (__ plainPrettyPrint, _type), allDefs
 
 # API
 

    return "#{type}"

prettyPrint = (type) ->
  if type.ForAll
    prettyPrint type.type
  else if type.Constrained
    if _notEmpty type.constraints
      (map highlightType, join [type.type], type.constraints).join ' '
    else
      highlightType type.type

printType = (type) ->
  if type.TypeVariable

  concat-map (fn [what over]
    (concat (map what over)))

  concat-with (fn [with what]
    (fold join-with empty what)
    join-with (fn [x joined]
      (concat {joined with x})))
  """
  "(size (concat-map (fn [x] {}) {1 2 3}))", 0

