Я хотел бы иметь возможность проанализировать файл без исключения программы, запускающей программу, и остановить программу при первой ошибке. Я использую это:
let parse input = match run pprog input with
| Success(result, _, _) -> result
| Failure(msg, _, _) -> failwith msg
let program = parse myFile
Переменная program
имеет тип AST.program
(не нужно показывать реализацию) благодаря шаблону соответствия функции parse
. Если я сделаю только это:
let program = run pprog myFile
program
относится к типу ParserResult<AST.Program, unit>
, поэтому его нельзя анализировать.
Мне было интересно, есть ли способ не завершить работу программы с запущенными исключениями?