(import simple-tests list-comprehensions) (define-test (lists?) (equal? (range 0) '()) (equal? (range 5) '(0 1 2 3 4)) (equal? (range -5) '(0 -1 -2 -3 -4)) (equal? (range 1 5) '(1 2 3 4)) (equal? (range 5 1) '(5 4 3 2)) (equal? (range 1 5 2) '(1 3)) (equal? (repeat 5 'x) '(x x x x x)) (equal? (iterate-times add1 5 1) '(1 2 3 4 5)) (equal? (iterate-until sub1 zero? 5) '(5 4 3 2 1)) (equal? (iterate-while sub1 positive? 5) '(5 4 3 2 1)) (equal? (collect word (word '(the quick brown fox))) '(the quick brown fox)) (equal? (collect (add1 x) (x '(0 1 2 3))) ; map '(1 2 3 4)) (equal? (collect x (x '(0 1 2 3 4 5) (odd? x))) ; filter '(1 3 5)) (equal? (collect (* 10 n) (n '(0 1 2 3 4 5) (positive? n) (even? n))) '(20 40)) (equal? (collect (list c k) (c '(A B C D E F G)) (k '(1 2 3 4 5 6 7 8))) '((A 1) (A 2) (A 3) (A 4) (A 5) (A 6) (A 7) (A 8) (B 1) (B 2) (B 3) (B 4) (B 5) (B 6) (B 7) (B 8) (C 1) (C 2) (C 3) (C 4) (C 5) (C 6) (C 7) (C 8) (D 1) (D 2) (D 3) (D 4) (D 5) (D 6) (D 7) (D 8) (E 1) (E 2) (E 3) (E 4) (E 5) (E 6) (E 7) (E 8) (F 1) (F 2) (F 3) (F 4) (F 5) (F 6) (F 7) (F 8) (G 1) (G 2) (G 3) (G 4) (G 5) (G 6) (G 7) (G 8))) (equal? (collect (list c k) (c '(A B C D E F G) (memv c '(A G))) (k '(1 2 3 4 5 6 7 8) (memv k '(1 8)))) '((A 1) (A 8) (G 1) (G 8))) (equal? (collect (list c k) (c '(A B C D E F G)) (k '(1 2 3 4 5 6 7 8) (memv c '(A G)) (memv k '(1 8)))) '((A 1) (A 8) (G 1) (G 8))) (equal? (collect (list x y z) (x '(A B)) (y '(1 2)) (z '(#f #t))) '((A 1 #f) (A 1 #t) (A 2 #f) (A 2 #t) (B 1 #f) (B 1 #t) (B 2 #f) (B 2 #t))) ) (compound-test (LIST-COMPREHENSIONS) (lists?) )