-
Notifications
You must be signed in to change notification settings - Fork 0
/
firstclassfns.lisp
57 lines (46 loc) · 953 Bytes
/
firstclassfns.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(define (f g) (g 2))
(define (mul2 x) (+ x x))
(print (f mul2))
(define (mul2 x) (+ x x))
(let ((newname mul2)) (print (newname 5)))
(define (range lo hi)
(if (< lo hi)
(pair lo (range (add1 lo) hi))
false))
(define (map f l)
(if (not l) l
(pair (f (left l)) (map f (right l)))))
(define (g x) (+ x 1))
(print (map g (range 0 4)))
-------
(define (f g) (g 2))
(print (f (lambda (x) (+ x x))))
(define (range lo hi)
(if (< lo hi)
(pair lo (range (add1 lo) hi))
false))
(define (map f l)
(if (not l) l
(pair (f (left l)) (map f (right l)))))
(print (map (lambda (x) (+ x 1)) (range 0 4)))
-------
(define (f g) (g 2))
(let ((y 3)) (print (f (lambda (x) (+ x y)))))
(define (retlam)
(let ((x 3))
(lambda () x)
)
)
(let ((l (retlam)))
(print (l))
)
-------
for discussion
(define (f a) (+ a b))
(print (f 2))
(define (sum-to x)
(if (= x 0)
0
(+ x (sum-to (sub1 x)))
))
(print (sum-to 700))