Я пишу простой анализатор рекурсивного спуска в OCaml. Как правило (насколько я могу судить по учебным пособиям в Интернете и в книгах), исключения указывают на ошибки анализа, например:
match tok with
TokPlus -> ...
| _ -> raise SyntaxError
Однако я подумываю использовать вместо этого тип параметра, т. Е .:
match tok with
TokPlus -> Some(...)
| _ -> None
Основная причина, по которой я хочу это сделать, заключается в том, что использование типов опций позволяет мне оптимизировать некоторые из моих комбинаторов для хвостовой рекурсии.
Есть ли недостатки в использовании опций вместо исключений? Будет ли это решение кусать меня за ногу, когда я начну разбирать более сложные структуры?