;; Z Mode version 0.20 of Mon Nov 29 09:25:37 2010 for Z 2.04 ;; z1> (defun big (( p) ( l)) (case l ((nil) Tuple/nil) ((cons x xs) (if ( (Function/defun big ( | ) (p l) ((case l ((()) Tuple/nil) ((cons x xs) (if ( ;; z2> (defun small (( p) ( l)) (case l ((nil) Tuple/nil) ((cons x xs) (if (>? x p) (small p xs) (cons x (small p xs)))))) ;; => (Function/defun small ( | ) (p l) ((case l ((()) Tuple/nil) ((cons x xs) (if (>? x p) (small p xs) (cons x (small p xs))))))) : ;; z3> (defun sortsub (( l)) (case l ((nil) Tuple/nil) ((cons x xs) (let ((a (small x xs)) (b (big x xs))) (append (sortsub a) (cons x (sortsub b))))))) ;; => (Function/defun sortsub ( | ) (l) ((case l ((()) Tuple/nil) ((cons x xs) (let ((a (small x xs)) (b (big x xs))) (append (sortsub a) (cons x (sortsub b)))))))) : ;; z4> (defun sort (&rest ( l)) (sortsub l)) ;; => (Function/defun sort ( | &rest ) (&rest l) ((sortsub l))) : ;; z5> (sort 3 5 2 8) ;; => (2 3 5 8) : ;; z6> (defun :Seq:/makenil (&idx (:Seq: seq)) (case seq ((nil) seq) ((cons x xs) (makenil xs)))) ;; => (Function/defun makenil ( | :Seq:) (seq) ((case seq ((()) seq) ((cons x xs) (makenil xs))))) : ;; z7> (defun :Seq:/reverse (&idx (:Seq: seq)) (case seq ((nil) seq) ((cons x xs) (append (reverse xs) (cons x (makenil xs)))))) ;; => (Function/defun reverse ( | :Seq:) (seq) ((case seq ((()) seq) ((cons x xs) (append (reverse xs) (cons x (makenil xs))))))) : ;; z8> (reverse [1 2 3 4]) ;; => [4 3 2 1] : ;; z9> (reverse '(1 2 3 4)) ;; => (4 3 2 1) :