   map labelConflict, fail.conflicts
 
 labelConflict = (conflict) ->
-  conflict.error = yes
+  if conflict.TypeVariable and conflict.ref.val
+    labelConflict conflict.ref.val
+  else
+    conflict.error = yes
 
 lookupJs = (moduleName) ->
   js = (lookupCompiledModule moduleName)?.js

checkTypes = (ctx) ->
  # failed = mapToArray filterMap ((name) -> name is 'could not unify'), ctx.substitution
  if isFailed ctx.substitution
    map labelConflicts, ctx.substitution.fails
    ctx.substitution.fails

labelConflicts = (fail) ->

  else if type.args
    printFlattenedToHtml type
  else
    throw new Error "Unrecognized type in printTypeToHtml"

printFlattenedToHtml = (type) ->
  printedOp = (printType type.op)
  if (printType type.op).match /^\[\d+\]$/
    htmlDelimited type, '[', ']', "#{(map printTypeToHtml, type.args).join ' '}"
  else
    opName = if printedOp is 'Fn0' then (opNameToHtml 'Fn') else printTypeToHtml type.op
    htmlCalled type, "#{opName} #{(map printTypeToHtml, type.args).join ' '}"

htmlCalled = (type, string) ->
