Я определил тип и функцию:
type element = ...
let merge (x0: element) (x1: element): element * bool = ...
Вторая часть возврата merge
представляет собой, если x0
и x1
являются объединяемыми. Если это так, первая часть возврата является результатом слияния, в противном случае первая часть может быть проигнорирована.
Затем я хотел бы реализовать функцию restructure: element list -> element list
, которая продолжает слияние до тех пор, пока любые 2 элемента списка могут объединяться (мы заменяем 2 элемента результатом их объединения couse), порядок объединения не важно.
Полагаю, это должна быть рекурсивная функция, и немного сложная для меня на данном этапе, кто-нибудь может помочь?
Большое спасибо