anchor.diff:  
     test_string   "nil"
     test_string   "(+ 1 2 (* 3 4))"
  -  test_file     "../examples/example_sum.ore"
  +  test_file  <| repo_root + "/examples/example_sum.ore"
   
  -  test_string   "(+ 1 2 (* 3 4)))"
  +  match Orelang.ParseFromFile <| repo_root + "/examples/example_sum.ore" with
  +  | Result.Error msg ->
  +    printfn "failed to parse: %A\n" msg
  +  | Result.OK expr ->
  +    let engine = Orelang.Engine()
  +    let result = engine.Evaluate expr
  +    printfn "result: %A" result
  +
  +  // failure case
  +  // test_string   "(+ 1 2 (* 3 4)))"
     0
  
positive.code:   let ParseFromFile (path: string) : Result<Expr, ErrorKind> =
      ParseFromString <| System.IO.File.ReadAllText path
  
  
  [<EntryPoint>]
  let main _ =
    let test_string s =
      match Orelang.ParseFromString s with
      | Result.OK ast -> printfn "string:\n%A\n" ast
  
negative.code:   type Expr = Nil
              | Number of decimal
              | Symbol of string
              | Function of string * Expr list
  
    type ErrorKind = ParseError of string
  
  