anchor.diff:      |List list -> apply context (List.head list) (List (List.map (eval context) (List.tail list)))
       | _ -> list
   
  +//Evaluates quote exp
   let eval_quote quote =
       match quote with
       |Quote (List []) -> List [] //special case for empty quoted list
       |Quote literal -> literal
       | _ -> quote //should not be matched, anyway
   
  +//generic evaluation
   let rec eval context sexp =
       match sexp with
       |Atom _ -> eval_atom context sexp
  
positive.code:                                     eprintf "Function %A expected a list of arguments, received %A" fname sexp
                                      raise (new  ArgumentException())))
  
  let eval_if (ctx:Context) eval condition if_true if_false =
      match (eval ctx condition) with
      | Atom (Symbol "nil") -> eval ctx if_false
      | List [] -> eval ctx if_false
      | _ -> eval ctx if_true
  
  let eval_list (context:Context) eval list =
      match list with
      |List [] -> List [] //Special case for empty list
  
negative.code:             raise (new ArgumentException())
      | _ -> atom //should not be matched, anyway
  
  //Evaluates defun form
  let eval_defun (gctx:Context) eval fname llist body =
      let arity = List.length llist
      let args = List.map (function |Atom v -> v| _ -> Symbol "nil") llist
  