Я пытаюсь реализовать функцию, которая возьмет список парсеров и пробует их один за другим, пока вы не добьетесь успеха. Если синтаксический анализатор в списке не завершится успешно, общий синтаксический анализатор завершится с ошибкой. Вот моя попытка:SML Parsing with Multiple Parsers
fun oneOf [] = NONE
| oneOf (p::ps) = fn inp => case parse p inp of
NONE => oneOf ps
| SOME (v,out) => SOME (v,out)
Я получаю много операторов/операндов, не согласных с ошибками. Любые намеки на то, где я ошибаюсь?