Implementando uma versão recursiva final da função do tipo quicksort no F # / OCaML

É possível implementar uma versão recursiva final do algoritmo de classificação rápida (via padrão de continuação)? E se for, como implementá-lo?

Versão normal (não otimizada):

let rec quicksort list =
 match list with
 | [] -> []
 | element::[] -> [element]
 | pivot::rest -> let ``elements smaller than pivot``, ``elements larger or equal to pivot``= 
                    rest |> List.partition(fun element -> element < pivot)
                  quicksort ``elements smaller than pivot`` @ [pivot] @ quicksort ``elements larger or equal to pivot``

questionAnswers(2)

yourAnswerToTheQuestion