(require-library "trace.ss") (define (insertlg f lst start) (if (null? lst) start (f (car lst) (insertlg f (cdr lst) start)))) ;;; Evaluates to the list parameter with exactly one instance of el removed. (define (delete lst el) (if (null? lst) (error "Element not found!") (if (eq? (car lst) el) (cdr lst) (cons (car lst) (delete (cdr lst) el))))) (define (find-most cf lst) (insertlg (lambda (c1 c2) (if (cf c1 c2) c1 c2)) lst (car lst))) (define (revintsto n) (if (= n 0) null (cons n (revintsto (- n 1))))) (define (intsto n) (reverse (revintsto n))) (define (rand-int-list n) (if (= n 0) null (cons (random 100) (rand-int-list (- n 1))))) (define (filter f lst) (insertlg (lambda (el rest) (if (f el) (cons el rest) rest)) lst null))