Я новичок в OCaml, и мне трудно реализовать ряд функций для создания программы прогнозирования текста T9. Например, если мое слово «Собака» — список целых чисел будет [3;6;4]. У меня уже есть функция сопоставления с образцом для связывания слов со списками int. Я использую тип данных try для сопоставления чисел с возможными вариантами слов:
type ('a, 'b) trie = Node of 'b list * ('a * ('a, 'b) trie) list
Дерево с ребрами, помеченными ключами типа 'a, и узлами, помеченными списками слов типа 'b.
Мне нужно написать функцию с параметрами trie и edge label, которая возвращает trie в конце ребра.
val trie_of_key : (’a, ’b) trie -> ’a -> (’a, ’b) trie = <fun>
Как пройти по ребрам, чтобы добраться до заданного узла? Функциональное программирование все еще дезориентирует меня, поэтому я не уверен в рекурсивных шагах, необходимых для получения ожидаемого поддерева.