ocaml: phase 5.1 csv.ml baseline (split + int_of_string + fold_left)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Inline CSV-like text:
a,1,extra
b,2,extra
c,3,extra
d,4,extra
Two-stage String.split_on_char: first on '\n' for rows, then on ','
for fields per row. List.fold_left accumulates int_of_string of the
second field across rows. Result = 1+2+3+4 = 10.
Exercises char escapes inside string literals ('\n'), nested
String.split_on_char, List.fold_left with a non-trivial closure body,
and int_of_string. 23 baseline programs total.
This commit is contained in:
12
lib/ocaml/baseline/csv.ml
Normal file
12
lib/ocaml/baseline/csv.ml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
let sum_second_col text =
|
||||||
|
let lines = String.split_on_char '\n' text in
|
||||||
|
List.fold_left (fun acc line ->
|
||||||
|
let fields = String.split_on_char ',' line in
|
||||||
|
if List.length fields >= 2 then
|
||||||
|
acc + int_of_string (List.nth fields 1)
|
||||||
|
else acc
|
||||||
|
) 0 lines
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
sum_second_col "a,1,extra\nb,2,extra\nc,3,extra\nd,4,extra"
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"caesar.ml": 215,
|
"caesar.ml": 215,
|
||||||
"calc.ml": 13,
|
"calc.ml": 13,
|
||||||
"closures.ml": 315,
|
"closures.ml": 315,
|
||||||
|
"csv.ml": 10,
|
||||||
"exception_handle.ml": 4,
|
"exception_handle.ml": 4,
|
||||||
"expr_eval.ml": 16,
|
"expr_eval.ml": 16,
|
||||||
"factorial.ml": 3628800,
|
"factorial.ml": 3628800,
|
||||||
|
|||||||
@@ -407,6 +407,11 @@ _Newest first._
|
|||||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||||
recursive match, List.append, List.fold_left.
|
recursive match, List.append, List.fold_left.
|
||||||
|
- 2026-05-09 Phase 5.1 — csv.ml baseline (split on '\n' then ',',
|
||||||
|
parse-int the second field, fold-left). Exercises char escapes
|
||||||
|
inside string literals, two-stage String.split_on_char, mixed
|
||||||
|
List.fold_left + int_of_string + List.nth. Sums column 2 of a
|
||||||
|
4-row inline CSV → 1+2+3+4 = 10. 23 baseline programs total.
|
||||||
- 2026-05-09 Phase 4 — polymorphic variants confirmation (+3 tests,
|
- 2026-05-09 Phase 4 — polymorphic variants confirmation (+3 tests,
|
||||||
506 total). The tokenizer was already classifying `` `Tag `` as a
|
506 total). The tokenizer was already classifying `` `Tag `` as a
|
||||||
ctor identical to a nominal one, but it had never been exercised by
|
ctor identical to a nominal one, but it had never been exercised by
|
||||||
|
|||||||
Reference in New Issue
Block a user