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
(defun deep_compare (a b)
(if (l a)
(if (l b)
(assign-lambda inner_result (deep_compare (f a) (f b))
(if inner_result
inner_result
(deep_compare (r a) (r b))
)
)
1
)
(if (l b)
-1
(if (> a b)
1
(- 0 (> b a))
)
)
)
)
(defun deep< (a b)
(= (deep_compare a b) -1)
)
(defun deep> (a b)
(= (deep_compare a b) 1)
)
(defun deep= (a b)
(= (deep_compare a b) 0)
)
(defun deep<= (a b)
(not (deep> a b))
)
(defun deep>= (a b)
(not (deep< a b))
)
(defun deep!= (a b)
(not (deep= a b))
)