Files
RustAst/examples/extreme_capture.myc
T
Brummel 16af3ae9fc Refactor Examples to use assert_eq
This commit updates all example files to use `assert_eq!` for verifying
output, replacing the previous `Output:` comments. This change makes the
examples more robust and self-testing.

The benchmark results in some examples have also been slightly adjusted,
reflecting minor performance variations after the refactoring.

Additionally, a runtime panic handling mechanism has been introduced in
the VM for function calls, which improves error reporting for unexpected
panics.
2026-03-26 15:07:48 +01:00

27 lines
759 B
Plaintext

;; Benchmark: 110ns
;; Benchmark-Repeat: 18390
(do
;; Excessive capture test
;; This script creates deep nesting where the inner-most lambda
;; grabs variables from every single outer scope.
(def excessive (fn [v1]
(do
(def v2 2)
(fn [v3]
(do
(def v4 4)
(fn [v5]
(do
(def v6 6)
(fn [v7]
(do
(def v8 8)
;; v1, v3, v5, v7 are parameters (captured as upvalues)
;; v2, v4, v6, v8 are locals (captured from outer scopes)
(+ v1 v2 v3 v4 v5 v6 v7 v8))))))))))
;; Execution: (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8) = 36
(assert-eq 36 ((((excessive 1) 3) 5) 7))
)