( (defun partition_inner (matched not-matched F L) (if L (if (a F (list (f L))) (partition_inner (c (f L) matched) not-matched F (r L)) (partition_inner matched (c (f L) not-matched) F (r L)) ) (c matched not-matched) ) ) (defun partition (F L) (partition_inner () () F L) ) )