# 3.5 Other sorts of origami
## Shell sort
Shell sort h-sorts a list for values of h. A list is h-sorted if,
for each value of i, the subsequence of elements at positions i, i+h,
i + 2h, ... is sorted. h-sorting for large values of h makes it easier
for small values.
In functional terms, one way to describe h-sorting is as unravelling the
list into h sublists, sorting each, then ravelling them back together.
Given a list transpose function ‘trans’ (which is either a fold or an
unfold; c.f. exercise 3.41), we can define ravelling by
ravel ∷ List (List α) → List (List α)
ravel = concatL ∘ trans
unravel ∷ Nat → List α → List (List α) is defined in terms of ‘takeL’
and ‘dropL’ and splits a list into n-length consecutive sublists, with
the last sublist being shorter if necessary.