This removes the exclusive from the res names and edge names. We now require that the names should be lists of strings, however they can still be single strings if that can be determined statically. Programmers should explicitly wrap their variables in a string by interpolation to force this, or in square brackets to force a list. The former is generally preferable because it generates a small function graph since it doesn't need to build a list.
22 lines
502 B
Plaintext
22 lines
502 B
Plaintext
-- main.mcl --
|
|
$foo = "a"
|
|
|
|
class c1($cond) {
|
|
$foo = "b" # this var is NOT exported into the parent scope on include
|
|
if $cond {
|
|
$foo = "c"
|
|
}
|
|
test "hello" {}
|
|
}
|
|
include c1(true)
|
|
|
|
# If the $foo did get exported from the `c1` scope, then the binding could
|
|
# change over time as `$cond` alternated between true and false. This would be
|
|
# error prone, and also require a higher-order FRP, which would add complexity
|
|
# but little value.
|
|
|
|
test "${foo}" {}
|
|
-- OUTPUT --
|
|
Vertex: test[a]
|
|
Vertex: test[hello]
|