If I understood the question correctly posed by Dr Jon Harrop...
let smallest lst = let rec sml lst v =
match lst with
[] -> v
| h::t ->
match t with
h::t -> if h < (List.hd t) then sml t h else sml t v
| _ -> v
in sml lst (List.hd lst) ;;