нужна функция, которая получает непустой список и возвращает максимальный элемент в списке и части списка слева и справа от макс. эл-та let rec splitmax seq = match seq with | [] -> [], 1.0e10, [] | t0::[] -> [], t0, [] | t0::sub -> let left, t1, right = splitmax(sub) in if t1 > t0 then (t0::left, t1, right) else ([], t0, sub) ;; такой вариант работатет; но если убрать первую строку в match with возникает Matching exception не понимаю почему -- пустой список в качестве аргумента никогда не передаётся. в чём дело?