ocaml: phase 5.1 exception_user.ml baseline (user exception with payload, 4+5+7+10 = 26)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Defines a user exception with int payload:
exception Negative of int
let safe_sqrt n =
if n < 0 then raise (Negative n)
else <integer sqrt via while loop>
let try_sqrt n =
try safe_sqrt n with
| Negative x -> -x
try_sqrt 16 -> 4
try_sqrt 25 -> 5
try_sqrt -7 -> 7 (handler returns -(-7) = 7)
try_sqrt 100 -> 10
sum -> 26
Tests exception declaration with int payload, raise with carry, and
try-with arm pattern-matching the constructor with payload binding.
56 baseline programs total.
This commit is contained in:
16
lib/ocaml/baseline/exception_user.ml
Normal file
16
lib/ocaml/baseline/exception_user.ml
Normal file
@@ -0,0 +1,16 @@
|
||||
exception Negative of int
|
||||
|
||||
let safe_sqrt n =
|
||||
if n < 0 then raise (Negative n)
|
||||
else
|
||||
let g = ref 1 in
|
||||
while !g * !g < n do g := !g + 1 done;
|
||||
!g
|
||||
|
||||
let try_sqrt n =
|
||||
try safe_sqrt n with
|
||||
| Negative x -> -x
|
||||
|
||||
;;
|
||||
|
||||
try_sqrt 16 + try_sqrt 25 + try_sqrt (-7) + try_sqrt 100
|
||||
@@ -15,6 +15,7 @@
|
||||
"coin_change.ml": 6,
|
||||
"csv.ml": 10,
|
||||
"exception_handle.ml": 4,
|
||||
"exception_user.ml": 26,
|
||||
"expr_eval.ml": 16,
|
||||
"expr_simp.ml": 22,
|
||||
"factorial.ml": 3628800,
|
||||
|
||||
@@ -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 — exception_user.ml baseline (user-defined
|
||||
exception with int payload, 4+5+7+10 = 26). Defines `exception
|
||||
Negative of int`, `safe_sqrt` raises it on negative input, and
|
||||
`try_sqrt` catches with `try ... with | Negative x -> -x`. Tests
|
||||
exception declaration, raise with carry-payload, try-with arm
|
||||
matching the constructor and binding the payload. 56 baseline
|
||||
programs total.
|
||||
- 2026-05-09 Phase 5.1 — flatten_tree.ml baseline (parametric ADT
|
||||
flatten, sum 1..7 = 28). Defines `type 'a tree = Leaf of 'a |
|
||||
Node of 'a tree list` then `flatten` recursively expands using
|
||||
|
||||
Reference in New Issue
Block a user