`alias meth(labels) = target` in a namespace block makes Ns.meth a call to target with those labels (the target's own parameter names without a list). The engine's 41 table-driven namespaces - 438 methods: Http, Udp, Process, Json, Value, Screen, Input, Audio, World, Tiled, ... - leave emit_ns_call for runtime/native/namespaces.ludic, spliced into every program; 532 lines of compiler go and the seed shrinks by 23k lines of IR. The game's IR is byte identical. The checker checks an alias call's arguments against its target. Still built in: the inline namespaces (Math, Text, List, Vector, Color, Time, Date, ...) and the methods that pick a target by argument type. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 lines
277 B
Text
9 lines
277 B
Text
# L6: a namespace method is declared once
|
|
program AliasTwice {
|
|
namespace Trail {
|
|
alias length(from, to) = trail_distance
|
|
alias length(a, b) = trail_distance
|
|
}
|
|
function trail_distance(a: int, b: int) -> int { return b - a }
|
|
entry { print(Trail.length(1, 2)) }
|
|
}
|