Пытаюсь написать quicksort, но не могу понять куда мне в итоге добавлять «голову» в отсортированный лист. Имеем:
let rec append lst1 lst2 =
match lst1 with
[] -> lst2
| h::t -> h :: append t lst2 ;;
let letf x y =
x < y;;
let right x y =
x >= y;;
let rec filter f lst =
match lst with
[] -> []
| h::t -> if (f h) then h :: (filter f t) else filter f t;;
сам quickSort:
let rec quickSort lst =
match lst with
[] -> []
| h::t -> append(quickSort(filter(left h) t)) (quickSort(filter(right h) t)) ;; (* <- как здесь добавить 'h' в отсортированный лист? *)