blob: 6ba98cddd2ea991360a10484d9e82cb40fe56411 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
(define fold
(lambda (f acc xs)
(if (null? xs)
acc
(fold f (f acc (car xs)) (cdr xs)))))
(define sum
(lambda (xs) (fold + 0 xs)))
(define range
(lambda (start stop step)
(if (>= start stop)
'()
(cons start (range (+ start step) stop step)))))
(define filter
(lambda (predicate xs)
(if (null? xs)
'()
(let* ((x (car xs))
(filtered (filter predicate (cdr xs))))
(if (predicate x) (cons x filtered) filtered)))))
|