defun lesser if null NIL if car cons car lesser cdr lesser cdr defun b

 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
;(defun lesser (L E)
; (if (null L)
; NIL
; (if (< (car L) E)
; (cons (car L) (lesser (cdr L) E))
; (lesser (cdr L) E)
; )
; )
;)
;
;(defun bigger (L E)
; (if (null L)
; NIL
; (if (>= (car L) E)
; (cons (car L) (bigger (cdr L) E))
; (bigger (cdr L) E)
; )
; )
;)
(defun filter (P L)
(if (null L)
NIL
(if (funcall P (car L))
(cons (car L) (filter P (cdr L)))
(filter P (cdr L))
)
)
)
(defun qsort (L)
(if (null L)
NIL
(append
(qsort
;(lesser (cdr L) (car L))
(filter #'(lambda (X) (< X (car L))) (cdr L))
)
(cons
(car L)
(qsort
;(bigger (cdr L) (car L))
(filter #'(lambda (X) (>= X (car L))) (cdr L))
)
)
)
)
)
(princ (qsort '(1 5 2 4 3)))