Я определил тип «слово» как список символов.Я пытаюсь написать рекурсивную функцию "div_word", которая принимает одно "слово" в качестве аргумента и возвращает список триплетов всех возможных (префикс, single_letter, суффикс) комбинаций "слова".
Пример выполнения в OCAML:
assert( divide_word ['c';'o';'d';'e'] = [ ([],'c',['o';'d';'e']) ; (['c'],'o',['d';'e']) ; (['c','o'],'d',['e']) ; (['c','o','d'],'e',[]) ];;
Я пытался написать функцию, но она возвращает только последнюю возможную комбинацию.Я знаю, что мне нужно найти способ вернуть фактический список, а не просто один триплет, я попытался объединить, а также написать отдельную функцию.
Это код, который я написал:
type word = char list;;
let rec divide_word (w:word) : (word*char*word) list =
match w with
|[] -> []
|h::[] -> [([],h,[])]
|h::t -> List.map (fun (fir,sec,th) -> (h::fir,sec,th)) (divide_word t);;
помогите!с: