У меня есть проблема с OCaml, я сейчас изучаю его, но я все еще новичок. Я хотел бы сделать функцию, которая возвращает true, если строка пуста или содержит только пробелы, и в то же время удалить любое вхождение begin
и end
.
Я пробовал уже это:
let isEmptyString s =
let rec empty i =
if i < 0 then true
else
let c = String.get s i in
if c = ' ' || c = '\009' then empty (pred i)
else false
in
s = Str.global_replace( Str.regexp "begin") "" s;
s = Str.global_replace( Str.regexp "end") "" s;
empty (pred (String.length s))
Но, очевидно, эта функция не работает так, как мне бы хотелось, потому что я все еще получаю begin
в Formula.importNrAgentsFormula
после ее вызова... Вот как я могу ее вызвать:
while true do
let input = read_line () in
if not (isEmptyString input) then
let (nr, f) = Formula.importNrAgentsFormula input in
incr counter;
flush stdout;
match choice with
| "graph" -> printRes (Graph.isSat ~verbose:verb nr f)
| _ -> printUsage ()
else ()
done
Если бы кто-то с большим опытом работы с OCaml мог заметить и объяснить мне ошибку, я был бы рад :)
Заранее спасибо,
С уважением.
Str.global_replace( Str.regexp "\\(begin\\)\\|\\(end\\)") "" s
- person Lhooq   schedule 06.06.2016