Я получаю ошибку совпадения для моего кода OCaml, и я понятия не имею, в чем проблема. Я попытался имея только один случай и происходит оттуда, чтобы выяснить, где проблема появляется, но ошибка я получаю это:Ошибка сбоя в матче OCaml
Exception: Match_failure ("hw2.ml", 49, 0).
Код:
let rec compileStack(il : instr list) (st : float list) =
match (il,st) with
[],[_] -> List.hd st
|((Push f)::t),[_] -> compileStack t (f::st)
|(Swap)::t, h2::h1::st -> compileStack t (h2::h1::st)
|(Calculate op)::t, h1::h2::st ->
match op with
Plus -> compileStack t (h2+.h1::st)
| Minus -> compileStack t (h2-.h1::st)
| Times -> compileStack t (h2*.h1::st)
| Divide -> compileStack t (h2/.h1::st) ;;
let execute (li : instr list) : float =
let stack = [] in
compileStack li stack;;
Любое предложение будет высоко оценен, застрял на это в течение 2 часов.
где находится строка 49? –
Каковы ваши исходные данные для неудачного теста? Кстати, сопоставление образцов на (il, st) не является исчерпывающим: вы пропустили кучу случаев. Кажется, это ваша проблема. –