;(trace true)
-(define (rang x L)
- (if (boolmemrec x L)
+(define (rang E L)
+ (if (boolmemrec E L)
(cond
- ((= x (first L)) 0)
- ((+ 1 (rang x (rest L)))))
+ ((= E (first L)) 0)
+ ((+ 1 (rang E (rest L)))))
nil))
(println "rang/find")
(println (rang 4 L))
;(trace nil)
-(define (tete n L)
+(define (tete N L)
(cond
((null? L) '())
- ((= n 0) '())
- ((cons (first L) (tete (- n 1) (rest L))))))
+ ((= N 0) '())
+ ((cons (first L) (tete (- N 1) (rest L))))))
(println "tete/slice")
(println (tete 3 L))
(println (slice L 0 3))
(println (reverseL L))
(println (reverse L))
-(define (list< n L)
+(define (list< N L)
(cond
((null? L) '())
- ((>= (first L) n) (list< n (rest L)))
- ((cons (first L) (list< n (rest L))))))
+ ((>= (first L) N) (list< N (rest L)))
+ ((cons (first L) (list< N (rest L))))))
(println "list<")
(println (list< 5 L))
(println (list< 5 C))
-(define (list>= n L)
+(define (list>= N L)
(cond
((null? L) '())
- ((< (first L) n) (list>= n (rest L)))
- ((cons (first L) (list>= n (rest L))))))
+ ((< (first L) N) (list>= N (rest L)))
+ ((cons (first L) (list>= N (rest L))))))
(println "list>=")
(println (list>= 5 C))
+;(trace true)
+
+(define (qsort L)
+ (cond
+ ((null? L) '())
+ ((append
+ ;the pivot is the first element of the list
+ (qsort (list< (first L) (rest L)))
+ (cons (first L) '())
+ (qsort (list>= (first L) (rest L)))))))
+(println "qsort")
+(println (qsort C))
+
+;(trace nil)
+
+;we suppose both lists are flat
+(setq L1 '(A ? ? B C D ?))
+(setq L2 '(? A B ? C ? ? D))
+
+;(println "replace")
+;(println L1)
+;(println L2)
+;the replace function modify the passed argument
+;(println (replace 'B L1))
+;(println (replace '? L1))
+;(println (replace '? L2))
+;(println L1)
+;(println L2)
+
+(define (filtre L1 L2 C)
+ ;the replace function modify the passed argument
+ ;FIXME: use the function argument C
+ (replace '? L1)
+ (replace '? L2)
+ (cond
+ ((and (null? L1) (null? L2)) true)
+ ((and (not (null? L1)) (null? L2)) nil)
+ ((and (null? L1) (not (null? L2))) nil)
+ ((and (inclu L1 L2) (inclu L2 L1) true))))
+(println "filtre")
+(println (filtre L1 L2 ?))
+
(exit)