( (defmacro assert items (if (r items) (list if (f items) (c assert (r items)) (q . (x))) (f items) ) ) (defmacro or ARGS (if ARGS (qq (if (unquote (f ARGS)) 1 (unquote (c or (r ARGS))) )) 0) ) (defmacro and ARGS (if ARGS (qq (if (unquote (f ARGS)) (unquote (c and (r ARGS))) () )) 1) ) (defmacro prepend items (if (r items) (list if (f items) (c assert (r items)) (q . (x))) (f items) ) ) ; take two lists and merge them into one (defun merge_list (list_a list_b) (if list_a (c (f list_a) (merge_list (r list_a) list_b)) list_b ) ) (defun-inline min (a b) (i (> a b) b a ) ) (defun-inline max (a b) (i (> a b) a b ) ) )