$module Sort; $use Compare StdIO; $func Sort e.list = e.list; Sort { /* empty */ = /* empty */; s.head e.tail = :: (e.smaller) (e.greater), s.head ; }; $func Split s.num e.list = (e.list) (e.list); Split s.num e.list, e.list : { /* empty */ = () (); s.head e.tail = :: (e.smaller) (e.greater), { = (s.head e.smaller) (e.greater); (e.smaller) (s.head e.greater); }; }; $func Main = e; Main, >; $func Split2 s.num e.list = (e.list) (e.list); Split2 s.num e.list, () () (e.list) $iter { e.list : s.head e.tail, { , (e.smaller s.head) (e.greater) (e.tail); (e.smaller) (e.greater s.head) (e.tail); }; } :: (e.smaller) (e.greater) (e.list), e.list : /*empty*/, (e.smaller) (e.greater);