Ich erhalte einen Fehler bei der Übereinstimmung meines OCaml-Codes, und ich habe keine Ahnung, was das Problem sein könnte. Ich habe versucht, nur in einem Fall mit und gehen von dort aus, um herauszufinden, wo das Problem aufkommt, aber die Fehler, die ich erhalten ist:Übereinstimmungsfehler Ausgabe OCaml
Exception: Match_failure ("hw2.ml", 49, 0).
Code:
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;;
Jeder möglicher Vorschlag sehr geschätzt werden, stecken geblieben hierauf seit 2 Stunden.
wo ist die Linie 49? –
Was sind Ihre Eingabedaten für den fehlgeschlagenen Test? Übrigens ist die Mustererkennung auf (il, st) nicht erschöpfend: Sie haben eine Menge Fälle übersehen. Dies scheint dein Problem zu sein. –