anchor.diff:      (setq f2 '-)
       (setq f3 'max)
   
  -    (assert-equal ___ (apply f1 '(1 2)))
  -    (assert-equal ___ (apply f2 '(1 2)))
  +    (assert-equal 3 (apply f1 '(1 2)))
  +    (assert-equal -1 (apply f2 '(1 2)))
   
       ; after the function name, the parameters are consed onto the front
       ; of the very last parameter
  -    (assert-equal ___ (apply f1 1 2 '(3)))
  -    (assert-equal ___ (apply f3 1 2 3 4 '()))))
  +    (assert-equal 6 (apply f1 1 2 '(3)))
  +    (assert-equal 4 (apply f3 1 2 3 4 '()))))
   
   
   (define-test test-apply-function-with-funcall
  
positive.code:   1)
  
  (define-test test-return-from-function-early
     (assert-equal (sign-of -5.5) ___)
     (assert-equal (sign-of 0) ___)
     (assert-equal (sign-of ___) 1))
  
  
  ;; ----
  
negative.code: 
  (define-test test-key-params ()
    "Key params allow the user to specify params in any order"
     (assert-equal (func-with-key-params) '(nil nil))
     (assert-equal (func-with-key-params :a 11 :b 22) '(11 22))
     ; it is not necessary to specify all key parameters
     (assert-equal (func-with-key-params :b 22) '(nil 22))
     ; order is not important
     (assert-equal (func-with-key-params :b 22 :a 0) '(0 22)))
  
  (defun func-key-params-can-have-defaults (&key  (a 3 a?) (b 4 b?))
    (list a a? b b?))
  
  (define-test test-key-params-can-have-defaults
      "key parameters can have defaults also"
     (assert-equal (func-key-params-can-have-defaults) '(3 nil 4 nil))
     (assert-equal (func-key-params-can-have-defaults :a 3 :b 4) '(3 t 4 t))
     (assert-equal (func-key-params-can-have-defaults :a 11 :b 22) '(11 t 22 t))
     (assert-equal (func-key-params-can-have-defaults :b 22) '(3 nil 22 t))
     ; order is not important
     (assert-equal (func-key-params-can-have-defaults :b 22 :a 0) '(0 t 22 t)))
  
  
  ;; ----
  