ocaml: phase 6 stdlib slice (List/Option/Result, +23 tests, 248 total)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
lib/ocaml/runtime.sx defines the stdlib in OCaml syntax (not SX): every function exercises the parser, evaluator, match engine, and module machinery built in earlier phases. Loaded once via ocaml-load-stdlib!, cached in ocaml-stdlib-env, layered under user code via ocaml-base-env. List: length, rev, rev_append, map, filter, fold_left/right, append, iter, mem, for_all, exists, hd, tl, nth. Option: map, bind, value, get, is_none, is_some. Result: map, bind, is_ok, is_error. Substrate validation: this stdlib is a nontrivial OCaml program — its mere existence proves the substrate works.
This commit is contained in:
@@ -588,16 +588,28 @@
|
||||
(loop decls)
|
||||
result))))
|
||||
|
||||
;; ocaml-run — convenience wrapper: parse + eval.
|
||||
;; ocaml-run — convenience wrapper: parse + eval. Layers the stdlib env
|
||||
;; (List, Option, Result) underneath the empty env so user code can use
|
||||
;; `List.map` etc. without explicit setup.
|
||||
;; Variable guarded so eval.sx is loadable without runtime.sx. runtime.sx
|
||||
;; sets ocaml-stdlib-env once loaded; before that, fall back to the empty
|
||||
;; env so the existing tests continue to work without stdlib.
|
||||
(define ocaml-stdlib-env nil)
|
||||
(define ocaml-base-env
|
||||
(fn ()
|
||||
(cond
|
||||
((not (= ocaml-stdlib-env nil)) ocaml-stdlib-env)
|
||||
(else (ocaml-empty-env)))))
|
||||
|
||||
(define ocaml-run
|
||||
(fn (src)
|
||||
(ocaml-eval (ocaml-parse src) (ocaml-empty-env))))
|
||||
(ocaml-eval (ocaml-parse src) (ocaml-base-env))))
|
||||
|
||||
;; ocaml-run-program — evaluate a program (sequence of decls + bare exprs).
|
||||
;; Threads an env through decls; returns the value of the last form.
|
||||
(define ocaml-run-program
|
||||
(fn (src)
|
||||
(let ((prog (ocaml-parse-program src)) (env (ocaml-empty-env)) (last nil))
|
||||
(let ((prog (ocaml-parse-program src)) (env (ocaml-base-env)) (last nil))
|
||||
(begin
|
||||
(define run-decl
|
||||
(fn (decl)
|
||||
|
||||
Reference in New Issue
Block a user