Examples of functions in Scheme language from SICP book.

Scheme: factorial function

Reverse a list passed as argument (iterative way):

(define (reverse-list lst) (define (reverse-list-iter list1 result) (if (null? list1) result (let ((tail (cdr list1)) (first (car list1))) (reverse-list-iter tail (cons first result))))) (reverse-list-iter lst (list)))

Reverse a list passed as argument (using append procedure):

(define (reverse-list list1) (if (null? list1) '() (append (reverse-list (cdr list1)) (list (car list1)))))

Create a list with all the elements in the list with same even-odd parity as the first element:

(define (same-parity lst) (define (same-parity-inner rmd list1) (if (null? list1) (list) (let ((felement (car list1)) (tail (cdr list1))) (if (= rmd (remainder felement 2)) (cons felement (same-parity-inner rmd tail)) (same-parity-inner rmd tail))))) (if (null? lst) (list) (let ((first (car lst))) (cons first (same-parity-inner (remainder first 2) (cdr lst))))))