{ Let list_insertion compare input. (LIST.reduce input [] Func sorted elem. Begin (inserting [] sorted) Define inserting left right. Match right | `nil (LIST.reverse (elem::left)) | `cons.{elem' right'} Match (compare elem elem') | `less (LIST.reverse_append left (elem::right)) | _ Goto (inserting (elem'::left) right') ; ;) } Where Let LIST. Package "list"