anchor.diff:      #literal{ type=bool, value=BoolLit};
   
   split_env(Atom, Env) when is_atom(Atom) ->
  -    case lists:member(Atom,?BUILDIN) of
  -        true ->
  -            #name{name=Atom, buildin=true};
  -        _   ->
  +    case {lists:member(Atom,?BUILDINS),lists:member(Atom,?PRIMOPS)} of
  +        {false, false}  ->
               {NameEnv, NewName} = lookup_name(Env, Atom),
  -            #name{name = NewName, env = NameEnv, buildin=false }
  +            #name{name = NewName, env = NameEnv, buildin=false };
  +        {IsBuildin, IsPrimitiv} ->
  +            #name{name=Atom, buildin=IsBuildin, primitiv=IsPrimitiv}
       end.
   
   %split_env(StringLit) when is_string(StringLit) ->
  
positive.code: % * list implementation
  % * quote
  % * closure
  %   * remove hacks ( make size adjustable)
  %   * rework code
  %   * ( rather store on head, than in stackframe)
  % * generalize everything prim op handling
  
  %% Problems:
  % * when shall i free the allocated storage for closures
  
negative.code: %conversions(int,float) ->
  %    float.
  
  buildin_type(OP) ->
      case
          {   lists:member(OP,?BOOL_OPS),
              lists:member(OP,?CMP_OPS),
              lists:member(OP,?NUM_OPS)} of
          { true, _, _ } ->
              #typeFun{arguments=[bool, bool], return=bool};
          { _, true, _ } ->
              #typeFun{arguments=[int, int], return=bool};
          { _, _, true} ->
              #typeFun{arguments=[int, int], return=int}
      end.
  
  
  -define(NOCODE,[]).
  