A def from another module into a registry that is not open is refused, and defs go through visibility (the registry exported, its module in the definer's uses). Index order: the declaring module's entries, then the other modules' by module name, each in reading order. A registry entry is emitted as its own file's code, so what it names is seen from its own module. Reseed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 lines
641 B
Text
17 lines
641 B
Text
# open_registry.ludic — L8 + L3: `export open registry Systems of System` takes defs from other
|
|
# modules. The index order is the declaring module's entries, then every other module's by module
|
|
# name - alpha before zeta, although zeta is imported first - so it never depends on import order.
|
|
#
|
|
# Running it prints: clock animals weather / 2 2 3
|
|
import "reg/core"
|
|
import "reg/zeta"
|
|
import "reg/alpha"
|
|
program OpenRegistry {
|
|
entry {
|
|
var out = ""
|
|
for i in 0 .. SY_COUNT { out = out + Systems[i].key + " " }
|
|
let s = Systems[SY_ANIMALS]
|
|
let w = Systems[SY_WEATHER]
|
|
print(`{out}/ {s.run()} {SY_WEATHER} {w.run()}`)
|
|
}
|
|
}
|