-- main.mcl -- # 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") $name1 = $out1() $name2 = $out2() $name3 = $out3() $name4 = $out4() test "${name1}" {} test "${name2}" {} test "${name3}" {} test "${name4}" {} -- OUTPUT -- Vertex: test[true-true] Vertex: test[true-false] Vertex: test[false-true] Vertex: test[false-false]