Files
mgmt/lang/interpret_test/TestAstFunc2/nested-changing-scoped-lambda.txtar
James Shubin 8fffd10280 lang: Port TestAstFunc2 to txtar format
This ports TestAstFunc2 from our home-grown content storage system to
the txtar package. Since a single file can be used to represent the
entire folder hierarchy, this makes it much easier to see and edit
tests.
2023-06-01 16:56:44 -04:00

60 lines
1.1 KiB
Plaintext

-- main.mcl --
import "fmt"
# this can return changing functions, and could be optimized, too
$funcgen = func($a) {
if $a {
func($b) {
if $b == "hello" {
func($c1) {
fmt.printf("true-true-%d", $c1)
}
} else {
func($c2) {
if $c2 >= 0 {
fmt.printf("true-false-%d", $c2)
} else {
"true-false-negative"
}
}
}
}
} else {
func($b) {
if $b == "hello" {
func($c3) {
if $c3 > 20 {
"false-true-big"
} else {
"false-true-small"
}
}
} else {
func($c4) { # $c4 is ignored, $b is from parent
"false-false-some-" + $b
}
}
}
}
}
$fn1 = $funcgen(true)
$fn2 = $funcgen(false)
$out1 = $fn1("hello")
$out2 = $fn1("world")
$out3 = $fn2("hello")
$out4 = $fn2("world")
test $out1(10) {}
test if true { $out2(20) } else { $out2(-20) } {}
test if false { $out2(20) } else { $out2(-20) } {}
test $out3(30) {}
test $out4(40) {}
-- OUTPUT --
Vertex: test[true-true-10]
Vertex: test[true-false-20]
Vertex: test[true-false-negative]
Vertex: test[false-true-big]
Vertex: test[false-false-some-world]