ocaml: phase 5.1 mutable_record.ml baseline (14/14 pass)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 50s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 50s
Counter-style record with two mutable fields. Validates the new
r.f <- v field mutation end-to-end through type decl + record literal
+ field access + field assignment + sequence operator.
type counter = { mutable count : int; mutable last : int }
let bump c = c.count <- c.count + 1 ; c.last <- c.count
After 5 bumps: count=5, last=5, sum=10.
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
"fizzbuzz.ml": 57,
|
||||
"list_ops.ml": 30,
|
||||
"module_use.ml": 3,
|
||||
"mutable_record.ml": 10,
|
||||
"option_match.ml": 5,
|
||||
"quicksort.ml": 44,
|
||||
"sum_squares.ml": 385,
|
||||
|
||||
15
lib/ocaml/baseline/mutable_record.ml
Normal file
15
lib/ocaml/baseline/mutable_record.ml
Normal file
@@ -0,0 +1,15 @@
|
||||
(* Baseline: mutable record fields via r.f <- v *)
|
||||
type counter = { mutable count : int; mutable last : int } ;;
|
||||
|
||||
let bump c =
|
||||
c.count <- c.count + 1 ;
|
||||
c.last <- c.count
|
||||
;;
|
||||
|
||||
let c = { count = 0; last = 0 } ;;
|
||||
bump c ;;
|
||||
bump c ;;
|
||||
bump c ;;
|
||||
bump c ;;
|
||||
bump c ;;
|
||||
c.count + c.last
|
||||
@@ -407,6 +407,10 @@ _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-08 Phase 5.1 — mutable_record.ml baseline (14/14 pass).
|
||||
Counter-style record with two mutable fields, bump function uses
|
||||
`r.f <- v` to mutate. End-to-end validates type decl + record
|
||||
literal + field access + field assignment + sequence operator.
|
||||
- 2026-05-08 Phase 2 — mutable record fields `r.f <- v` (+4 tests, 451
|
||||
total). `<-` added to op-table at level 1 (same as `:=`). Eval
|
||||
short-circuits on `<-` to mutate the lhs's field via host SX
|
||||
|
||||
Reference in New Issue
Block a user