{
: list_insertion_on_heap
: list_insertion_on_stack
: list_insertion list_insertion_on_heap
}
Where
Define (list_insertion_on_heap compare input)
Define (insert sorted a)
Iterate {left right} From {'nil sorted}
Match right
| 'nil (LIST.reverse [a & left])
| 'cons.{b right_tail}
Match (compare a b)
| 'less (LIST.reverse_append left [a & right])
| _ Continue {[b & left] right_tail}
;
;
In
(LIST.reduce input 'nil insert)
Define (list_insertion_on_stack compare input)
Define (insert sorted a)
Define (rec rec sorted)
Match sorted
| 'nil [a & 'nil]
| 'cons.{b sorted_tail}
Match (compare a b)
| 'less [a & sorted]
| _ [b & (rec rec sorted_tail)]
;
;
In
(rec rec sorted)
In
(LIST.reduce input 'nil insert)
Where
Let LIST Package "list"