1
1
mirror of https://github.com/kanaka/mal.git synced 2024-08-18 02:00:40 +03:00
mal/impls/fsharp/error.fs
Joel Martin 8a19f60386 Move implementations into impls/ dir
- Reorder README to have implementation list after "learning tool"
  bullet.

- This also moves tests/ and libs/ into impls. It would be preferrable
  to have these directories at the top level.  However, this causes
  difficulties with the wasm implementations which need pre-open
  directories and have trouble with paths starting with "../../". So
  in lieu of that, symlink those directories to the top-level.

- Move the run_argv_test.sh script into the tests directory for
  general hygiene.
2020-02-10 23:50:16 -06:00

22 lines
1008 B
Forth

module Error
exception ReaderError of string
exception EvalError of string
exception MalError of Types.Node
let expectedXButEOF x = ReaderError(sprintf "Expected %s, got EOF" x)
let expectedX x = ReaderError(sprintf "Expected %s" x)
let unexpectedChar () = ReaderError("Unexpected char")
let invalidToken () = ReaderError("Invalid token")
let expectedEvenNodeCount () = EvalError("Expected even node count")
let wrongArity () = EvalError("Arity: wrong number of arguments")
let argMismatch () = EvalError("Argument mismatch")
let symbolNotFound s = EvalError(sprintf "'%s' not found" s)
let noEnvironment () = EvalError("No environment")
let tooManyValues () = EvalError("Too many values")
let notEnoughValues () = EvalError("Not enough values")
let onlyOneSymbolAfterAmp () = EvalError("only one symbol after &")
let errExpectedX x = EvalError(sprintf "expected %s" x)
let indexOutOfBounds () = EvalError("Index out of bounds")