   if inferredType
     if inferredType.name
       available = filterMap ((name) -> name isnt inferredType.name), available
-    inferred = newMapWith 'inferred', type: printType inferredType
+    inferred = newMapWith 'inferred', type: plainPrettyPrint toForAll toConstrained inferredType
   else
     inferred = newMap()
   values concatMaps inferred, mapMap printed, available

  if type.TypeApp
    new TypeApp (replaceQuantifiedByOrigin type.op),
      (replaceQuantifiedByOrigin type.arg)
  else if type.QuantifiedVar and type.origin
    new TypeVariable (print type.origin), star
  else
    type


#     (call_ (token_ 'cons-array'), [x, (arrayToConses xs)])

typeConstrainedCompile = (ctx, call) ->
  [type, constraints...] = _arguments call
  new Constrained (typeConstraintsCompile ctx, constraints), (typeCompile ctx, type)

typeCompile = (ctx, expression, expectedKind) ->
