Первая часть верна (для возврата списка, а не массива):
match s with
| "" -> []
она заботится о пустом строковом регистре, который в рекурсивной функции является конечным регистром.
Для второй части вам необходимо:
- отделить первый символ от остальной части строки.
- вызов функции с остальной частью строки.
- объединение первого символа с возвращенным списком.
Чтобы объединить элемент в список, вы можете использовать::
оператор:
c :: lst
Вы добираетесь, так что продолжайте.