Files
mgmt/lang/interpret_test/TestAstFunc2/lambdafunc-recursive-double.txtar
James Shubin f92f34dc54 lang: The in keyword can't be a variable name
At least for now until we figure out some fancier parser magic. (If
at all possible!)
2024-01-12 18:22:00 -05:00

35 lines
632 B
Plaintext

-- main.mcl --
import "fmt"
# recursive function (not supported!)
$sum1 = func($i) {
if $i < 0 {
-1 * $sum2(-1 * $i)
} else {
if $i == 0 {
0 # terminate recursion
} else {
$i + $sum2($i - 1)
}
}
}
$sum2 = func($i) {
if $i < 0 {
-1 * $sum1(-1 * $i)
} else {
if $i == 0 {
0 # terminate recursion
} else {
$i + $sum1($i - 1)
}
}
}
$out1 = $sum1(4) # 4 + 3 + 2 + 1 + 0 = 10
$out2 = $sum2(-5) # -5 + -4 + -3 + -2 + -1 + -0 = -15
test fmt.printf("sum1(4) is %d", $out1) {}
test fmt.printf("sum2(-5) is %d", $out2) {}
-- OUTPUT --
# err: errSetScope: recursive reference while setting scope: not a dag