         ctx.doDefer expression, dependencyName
 
 definitionPairCompile = (ctx, pattern, value) ->
-  # log "COMPILING", pattern
   ctx.definePattern pattern
   # log "deferrement before assign !!!", ctx.shouldDefer()
   compiled = expressionCompile ctx, value

    else if type.TypeApp
      isNormalizedConstraintArgument type.op


includesJsType = (type) ->
  if type.TypeConstr
    typeEq type, jsType
  else if type.TypeApp
    (includesJsType type.op) or (includesJsType type.arg)

typeEq = (a, b) ->
  if a.TypeVariable and b.TypeVariable or
      a.TypeConstr and b.TypeConstr
    a.name is b.name
  else if a.QuantifiedVar and b.QuantifiedVar
    a.var is b.var

      mutateMappingOrigin type.arg, expression
    mutateMarkingOrigin type, expression

# Used on builtin types
markOrigin = (typeOrConstraint, expression) ->
  clone = substitute newMap(), typeOrConstraint
  mutateMarkingOrigin clone, expression
  clone

