       atom.label = 'name'
       id = (ctx.definitionId()) ? (ctx.declarationId symbol) ? ctx.freshId()
       type = toConstrained ctx.freshTypeVariable star
-      ctx.bindTypeVariables [type.type.name]
+      # ctx.bindTypeVariables [type.type.name]
       ctx.addToDefinedNames {name: symbol, id: id, type: type}
       type: type
       id: id

      (substituteList ctx.substitution, constraints)
    # Finalizing type again after possibly added substitution when defer constraints
    currentType = substitute ctx.substitution, type
    # log "assign type", name, (printType currentType), retainedConstraints
    ctx.assignType name,
      if polymorphic
        quantifyUnbound ctx, (addConstraints currentType, retainedConstraints)

        throw new Error "Error when deferring #{name} #{e.message}"
      if _notEmpty retainedConstraints
        ctx.extendSubstitution substituionFail "#{name}'s context is too weak, missing #{listOf (map printType, retainedConstraints)}"
  else
    [deferredConstraints, retainedConstraints] = deferConstraints ctx,
      ctx.allBoundTypeVariables(),
