(FILECREATED "17-Mar-86 18:16:43" {ERIS}<TAMARIN>WORK>SIMULATE>TEST2FNS.;2 2917   

      changes to:  (VARS TEST2FNSCOMS)

      previous date: "28-Feb-86 18:59:12" {ERIS}<TAMARIN>WORK>SIMULATE>TEST2FNS.;1)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT TEST2FNSCOMS)

(RPAQQ TEST2FNSCOMS ((* second TAMULATOR test)
		       (FNS TEST2)
		       (* original -- tail recursion eliminated)
		       (FNS TEST2A)
		       (* as TEST2 but does call itself)
		       (FNS TESTA)
		       (FNS TEST2B)
		       (* returns sum of those of 1st 6 args that non-NIL)
		       (FNS FIB)
		       (* crude Fibonacci series)
		       (FNS TEST TESTFVAR)))



(* second TAMULATOR test)

(DEFINEQ

(TEST2
  [LAMBDA (X)                                                          (* jmh 
                                                                           "27-Feb-86 08:57")
            
            (* * oops -- tail recursion elimination)

    (COND
       ((EQ X 0)
        X)
       (T (TEST2 (SUB1 X])
)



(* original -- tail recursion eliminated)

(DEFINEQ

(TEST2A
  [LAMBDA (X)                                                (* rtk "28-Feb-86 17:10")
    (COND
      ((NEQ X 6)
	(TESTA X))
      (T X])
)



(* as TEST2 but does call itself)

(DEFINEQ

(TESTA
  [LAMBDA (X)                                                (* rtk "28-Feb-86 17:08")
    (TEST2A (IPLUS X 1])
)
(DEFINEQ

(TEST2B
  [LAMBDA (A1 A2 A3 A4 A5 A6)                                          (* jmh 
                                                                           "27-Feb-86 12:24")
    (IPLUS (if A1
             else 0)
           (if A2
             else 0)
           (if A3
             else 0)
           (if A4
             else 0)
           (if A5
             else 0)
           (if A6
             else 0])
)



(* returns sum of those of 1st 6 args that non-NIL)

(DEFINEQ

(FIB
  [LAMBDA (X)                                                          (* jmh 
                                                                           "27-Feb-86 12:49")
    (if (OR (EQ X 0)
                (EQ X 1))
        then 1
      else (IPLUS (FIB (IDIFFERENCE X 1))
                      (FIB (IDIFFERENCE X 2])
)



(* crude Fibonacci series)

(DEFINEQ

(TEST
  [LAMBDA (Y)                                                (* edited: "17-Mar-86 15:07")
    (PROG ((X 5))
          (SETQ X (CONS 6 (CONS 5 NIL)))
          (TESTFVAR (if (GREATERP Y (CAR X))
			  then (CADR X)
			else (CAR X])

(TESTFVAR
  [LAMBDA (Y)                                                (* edited: "13-Mar-86 15:32")
    (SETQ X (IPLUS Y X])
)
(PUTPROPS TEST2FNS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (726 1069 (TEST2 736 . 1067)) (1120 1290 (TEST2A 1130 . 1288)) (1333 1475 (TESTA 1343 . 
1473)) (1476 1963 (TEST2B 1486 . 1961)) (2024 2395 (FIB 2034 . 2393)) (2431 2838 (TEST 2441 . 2701) (
TESTFVAR 2703 . 2836)))))
STOP