(define (fib n) (cond ((< n 1) 0) ((or (equal? n 1) (equal? n 2)) 1) (else (+ (fib (- n 2))(fib (- n 1)))))) (define (member-nl n-list member) (cond ((null? n-list) #f) ((equal? member (car n-list)) #t) ((list? (car n-list)) (or (member-nl (car n-list) member) (member-nl (cdr n-list) member))) (else (member-nl (cdr n-list) member)))) (define (test-this expression result) (if (equal? (eval expression) result) (begin (display expression) (display " => ") (display result) (display " passed") (newline)) (begin (display "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV") (newline) (display "FAILURE--->> ") (display expression) (display " => ") (display (eval expression)) (display " (expected ") (display result) (display ")") (display " <<---FAILURE") (newline) (display "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^") (newline)))) (display "Testing fib" ) (newline) (test-this '(fib 5) 5 ) (test-this '(fib 2) 2 ) (test-this '(fib 2) 1 ) (test-this '(fib 3) 2 ) (test-this '(fib 0) 0) (test-this '(fib -1) 0) (test-this '(fib -6) 0) (test-this '(fib -22) 0) (test-this '(fib 1) 1) (test-this '(fib 2) 1) (test-this '(fib 3) 2) (test-this '(fib 4) 3) (test-this '(fib 19) 4181) (test-this '(fib 23) 28657) (newline) (newline) (display "Testing member-nl") (newline) (test-this '(member-nl '((3 3 4) 8 3) 8) #t) (test-this '(member-nl '((3 3 4) 8 3) 14) #f) (test-this '(member-nl '((3 3 4) 8 3) 4) #t ) (test-this '(member-nl () 'a) #f) (test-this '(member-nl '(3 a) 3) #t) (test-this '(member-nl '(3 #f 5) #f) #t)