# this can return changing functions, and could be optimized, too $funcgen = func($a) { if $a { func($b) { if $b == "hello" { func() { "true-true" } } else { func() { "true-false" } } } } else { func($b) { if $b == "hello" { func() { "false-true" } } else { func() { "false-false" } } } } } $fn1 = $funcgen(true) $fn2 = $funcgen(false) $out1 = $fn1("hello") $out2 = $fn1("world") $out3 = $fn2("hello") $out4 = $fn2("world") test $out1() {} test $out2() {} test $out3() {} test $out4() {}