Welcome to the CHICKEN Scheme pasting service
example-2 added by ron-a on Fri Oct 31 08:41:53 2014
{----------------------------------------- merge-sort.mta MERGE SORT --------------------------------------------------------} def [sort-by fn seq] [ ; Sort seq in order of fn. if (< (len seq) 2) [return seq] set n (floor (len seq) 2) return (merge-lists-by fn (sort-by fn (take seq n)) (sort-by fn (drop seq n))) ] def [merge-lists-by fn a b] [ ; Merge two sorted lists in order of fn. if (empty? a) [return b] if (empty? b) [return a] if (fn (first a) (first b)) [ return (push (first a) (merge-lists-by fn (rest a) b)) ] else [ return (push (first b) (merge-lists-by fn a (rest b))) ] ] ; Sort a list of numbers. set L [2 -4 -17 4 5 6 2 35 5 6 1000 7 20 5 19 -3 3] (? (sort-by < L)) ; [-17 -4 -3 2 2 3 4 5 5 5 6 6 7 19 20 35 1000]