ocaml: phase 5.1 rpn.ml baseline (Reverse Polish Notation evaluator, [3 4 + 2 * 5 -] = 9)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s

Stack-based RPN evaluator:

  let eval_rpn tokens =
    let stack = Stack.create () in
    List.iter (fun tok ->
      if tok is operator then
        let b = Stack.pop stack in
        let a = Stack.pop stack in
        Stack.push (apply tok a b) stack
      else
        Stack.push (int_of_string tok) stack
    ) tokens;
    Stack.pop stack

For tokens [3 4 + 2 * 5 -]:
  3 4 +  ->  7
  7 2 *  ->  14
  14 5 - ->  9

Exercises Stack.create / push / pop, mixed branch on string
equality, multi-arm if/else if for operator dispatch, int_of_string
for token parsing.

39 baseline programs total.
This commit is contained in:
2026-05-09 08:39:56 +00:00
parent 13fb1bd7a9
commit 095bb62ef9
3 changed files with 28 additions and 0 deletions

View File

@@ -407,6 +407,13 @@ _Newest first._
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
'a tree`) with insert + in-order traversal. Tests parametric ADT,
recursive match, List.append, List.fold_left.
- 2026-05-09 Phase 5.1 — rpn.ml baseline (Reverse Polish Notation
evaluator using Stack). Walks the token list with List.iter, pushes
ints onto the stack, on operator tokens pops two operands and
pushes the result. `[3 4 + 2 * 5 -]` evaluates as 3+4=7, 7*2=14,
14-5=9 → 9. Exercises Stack.create / push / pop, mixed branch on
string equality, multi-arm if/else if, int_of_string for token
parsing. 39 baseline programs total.
- 2026-05-09 Phase 5.1 — newton_sqrt.ml baseline (Newton's method
for sqrt, sqrt(2)*1000 truncated → 1414). 20 iterations of
`g := (g + x/g) / 2` converges to ~1.414213562 for x=2. Multiplied