It is all about recursion……

;;this is test function (define (count1 x) (+ x 1)) (define count (lambda (x) (+ x 1))) ;;1. Define and test a procedure countdown that takes a natural number and returns a list of the natural numbers less than or equal to that number, in descending order. (define (countdown x) (if (zero? x) '(0) (cons x (countdown (- x 1))))) ;;(countdown 5) ;;2. Define and test a procedure insertR that takes two symbols and a list and returns a new list with the second symbol inserted after each occurrence of the first symbol. (define insertR (lambda (x y z) (if (null? z) z (if (eq? x (car z)) (cons (car z) (cons y (insertR x y (cdr z)))) (cons (car z) (insertR x y (cdr z))))))) ;;3.Define and test a procedure remove-1st that takes a a symbol and a list and returns a new list with the first occurrence of the symbol removed. (define remove-1st (lambda (x xs) (if (null? xs) xs (if (eq? x (car xs)) (cdr xs) (cons (car xs) (remove-1st x (cdr xs))))))) ;;5. filter (define filter1 (lambda (predict xs) (if (null? xs) xs (if (predict (car xs)) (cons (car xs) (filter1 predict (cdr xs))) (filter1 predict (cdr xs)))))) ;;; ( ) [ ] { } " , ' ` ; # | \ all of thest can not be used in the indentifers. ;;find function in haskell (define find1 (lambda (predict xs) (if (null? xs) xs (if (predict (car xs)) (car xs) (find1 predict (cdr xs))))))

Advertisements