anchor.diff: -;;;; nix operating system project
  -;;;; list processor environment
  -;;;; Copyright (c) 2008 Sven Klose <pixel@copei.de>
  -;;;;
  -;;;; Argument expander.
  +;;;;; TRE environment
  +;;;;; Copyright (c) 2008-2009 Sven Klose <pixel@copei.de>
  +;;;;;
  +;;;;; Argument expander.
  +;;;;;
  +;;;;; This is required for APPLY in compiled code, so APPLY *MUST NOT*
  +;;;;; be used while expanding without errors.
   
   (defun argument-keyword? (x)
     (in? x '&rest '&body '&optional '&key))
  
positive.code: 		   num 0
  		   no-static nil
  		   rest-arg nil)
  	 (nconc (exp-main argdefs alst)
  			 key-args
  			 rest-arg))))
  
  (defun argument-expand (fun def vals &optional (apply-values t))
    (funcall (if apply-values
  			   #'identity
  			   #'carlist)
  		   (argument-expand2 fun def vals apply-values)))
  
  (defun argument-expand-names (fun def)
    (argument-expand fun def nil nil))
  
negative.code: 				  (err "static sublevel argument definition after ~A" no-static))
  				(and apply-values (atom vals.)
  					 (err "sublist expected for argument ~A" num))
  				(%nconc (argument-expand2 fun def. vals. apply-values)
  					    (exp-main .def .vals)))
  
  		 exp-check-too-many
             #'((def vals)
  