191 lines
3.2 KiB
Plaintext
191 lines
3.2 KiB
Plaintext
;;
|
|
;; Source:
|
|
;;
|
|
;; Created By: Bob CHERRY
|
|
;;
|
|
;; Creation Date: APR-2-87
|
|
;;
|
|
;; Last Update:
|
|
;;
|
|
;; Filed As: {ERIS}<LISPCORE>TEST>I.S.Oprs>ISOPRS.TEST
|
|
;;
|
|
;;
|
|
;; Syntax: Just run with DO-TEST
|
|
;;
|
|
;;
|
|
;; Function Description: Chapter 9 (IRM) Iterative Statements
|
|
;;
|
|
;;
|
|
;;
|
|
;; Argument(s): FORM - what is evaluated.
|
|
;;
|
|
;; Returns: depends on what is used to terminate execution.
|
|
;; Should return T
|
|
;;
|
|
(do-test "test FOR - IN - EQUAL funct"
|
|
(LET ((FOO1 '(A B C D E))
|
|
(FOO2 '((A) (B) (C)))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 3
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT (IL:LIST Y)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test FOR - WHILE - NOT - GREATERP funct"
|
|
(LET ((FOO1 '(A B C D E))
|
|
(FOO2 '((A) (B) (C)))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT (IL:LIST Y)
|
|
IL:WHILE (IL:NOT (IL:GREATERP X 3))
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test FOR - WHILE - LESSP funct"
|
|
(LET ((FOO1 '(A B C D E))
|
|
(FOO2 '((A) (B) (C)))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT (IL:LIST Y)
|
|
IL:WHILE (IL:LESSP X 4)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test SMALLEST & LARGEST funct"
|
|
(LET ( (FOO1 '(7 15 1 3 9))
|
|
)
|
|
(AND (EQ 1
|
|
(IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:SMALLEST Y)
|
|
)
|
|
(EQ 15
|
|
(IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:LARGEST Y)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test UNTIL funct"
|
|
(LET ( (FOO1 '(1 4 9 16 25)
|
|
)
|
|
)
|
|
(EQUAL FOO1
|
|
(IL:for il:old X IL:from 1 IL:until (EQUAL x 6)
|
|
IL:COLLECT (IL:TIMES X X)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test FOR - BY funct"
|
|
(LET ((FOO1 '(A B C D E))
|
|
(FOO2 '(A B C))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 6 IL:by 2
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT Y)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test COLLECT - WHEN funct"
|
|
(LET ((FOO1 '(1 B 3 D 5))
|
|
(FOO2 '(1 3 5))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT Y IL:when (IL:NUMBERP Y)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test UNLESS funct"
|
|
(LET ((FOO1 '(1 B 3 D 5))
|
|
(FOO2 '(B D))
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:to 5
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT Y IL:unless (IL:NUMBERP Y)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test REPEATWHILE - REPEATUNTIL funct"
|
|
(LET ((FOO1 '(1 B 3 D 5))
|
|
(FOO2 '(B D))
|
|
)
|
|
(AND (IL:EQUAL (IL:for X IL:from 1 IL:REPEATWHILE IL:NOT
|
|
(IL:EQUAL Y (CDR FOO2))
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT Y IL:unless (IL:NUMBERP Y)
|
|
)
|
|
FOO2
|
|
)
|
|
(IL:EQUAL (IL:for X IL:from 1 IL:REPEATUNTIL
|
|
(IL:EQUAL Y (CDR FOO2))
|
|
IL:as Y IL:in FOO1
|
|
IL:COLLECT Y IL:unless (IL:NUMBERP Y)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
)
|
|
;;
|
|
;; Next Test
|
|
;;
|
|
(do-test "test I.S.OPR funct"
|
|
(LET ((FOO1 '(1 B 3 D 5))
|
|
(FOO2 '(B D))
|
|
)
|
|
(IL:I.S.OPR 'RATS
|
|
'(SETQ IL:$$VAL (IL:NCONC1 IL:$$VAL IL:BODY))
|
|
)
|
|
(AND (IL:EQUAL (IL:for X IL:from 1 IL:REPEATWHILE IL:NOT
|
|
(IL:EQUAL Y (CDR FOO2)
|
|
)
|
|
IL:as Y IL:in FOO1
|
|
IL:RATS Y IL:unless (IL:NUMBERP Y)
|
|
)
|
|
FOO2
|
|
)
|
|
)
|
|
)
|
|
)
|
|
STOP |