     type
 
 substituteList = (substitution, list) ->
-  map ((t) -> substitute substitution t), list
+  map ((t) -> substitute substitution, t), list
 
 findFree = (type) ->
   if type instanceof TypeVariable

      typeFn compiledArgs...
    else
      arity = args.length
      applyKindFn (new TypeConstr name, kindFn arity), compiledArgs...
  else
    malformed op, 'Should use a type constructor here'


      # For explicitly typed bindings, we need to check that the inferred type
      #   corresponds to the annotated
      if ctx.isTyped name
        # TODO: check class constraints
        unify ctx, currentType.type, (freshInstance ctx, ctx.type name).type
      else
        [deferredConstraints, retainedConstraints] = deferConstraints ctx,
          ctx.allBoundTypeVariables(),
          (findFree currentType),
          (substituteList ctx.substitution, matched.tea.constraints)
        ctx.assignType name,
          if ctx.isAtDefinition()
            quantifyAll (addConstraints currentType, retainedConstraints)
          else
            toForAll currentType
  # here I will create type schemes for all definitions
