anchor.diff:      {"@" ++ Label,""};
   
   codegen(#call{ type=RetType, target = Target,  arguments = Args }) ->
  +
       CodeArgs = lists:map(fun(Arg) ->  codegen(Arg) end, Args),
       {Vars, ArgCodes}  = lists:unzip(CodeArgs),
       ArgCodeLines =  lists:concat(ArgCodes),
  
positive.code: 
  -record(closure,{
      lambda,
      captures = []
  }).
  
  
negative.code: type(#literal{} = Lit) ->
      Lit.
  
  % returns arguments with type information
  type_check_args(Got, Expected) ->
      length(Got) == length(Expected) orelse throw(invalid_number_of_arguements),
      lists:map(
          fun
              ({Argument, ExpectedType}) ->
                  ensure_type(Argument, ExpectedType)
          end,lists:zip(Got, Expected)).
  
  
  ensure_type(Expr = #name{ name=Name },Type) ->
  