, чтобы прояснить мою дилемму, я объясню проблему, с которой я столкнулся ... По сути, мне передают строку, которая может содержать отдельные символы или диапазоны символов, и пытаюсь вернуть список символов, представленныхстрока, которую мне передали.
Пример.«b» просто выдаст список ['b'], «az» даст ['a';«б»;'c';...;'z'] и что-то вроде "ad-g2-6" будет ['a';'d';«е»;'f';'г' ;«2»;«3»;«4»;«5»;'6'], так как есть символ a и диапазоны dg и 2-6.(Также стоит отметить, что что-то вроде «a-» будет просто ['a'; '-'], так как диапазон не был завершен.
Мои идеи для решения этой проблемы сводятся к взрыву строки всписок символов (lst), затем сопоставление с образцом и построение на аккумуляторе, например
let mainfunc str = let lst = (explode str) in
let rec func lst acc = match lst with
| [] -> acc
| a::'-'::b::t -> func t (acc @ **SOMETHING TO GET THIS RANGE**)
| a::t -> func t (acc @ [a])
in func lst []
Все, что могло бы помочь мне получить диапазон между символами, было бы здорово, и я открыт для идей, если у кого-то есть лучшиеспособ решить эту проблему, чем то, что я настроил.
(Также обратите внимание, что моя функция разнесения работает как задумано и преобразует строку в список символов)