DEFER: insert : (insert) ( key n seq -- ) [ [ 1- ] dip nth ] 2keep [ set-nth ] 2keep [ 1- ] dip insert ; inline recursive : insert ( key n seq -- ) over zero? not [ pick pick 1- pick nth <=> +lt+ = [ (insert) ] [ set-nth ] if ] [ set-nth ] if ; inline recursive : insertion-sort ( seq -- ) [ length ] keep [ [ nth ] 2keep insert ] curry each ; inline