Elements like composes or the operators as functions require unique identifiers to be generated:
a \> b;
let f = a, g = f in \x -> g(f(x));
Both f and g must be unique. This code is currently a problem.
var f = ...,
g = ....;
f \> g;
since it generates
var f = ...,
g = ....;
let f := f, g := g in \x -> g(f(x));
This is currently handled by generating additional uids in the lexical pass since no other stage can generate unique ids.
Instead, the unique should be threaded though all stages so every stage can use unique and know that no other part of compilation is using the same uid.
Elements like composes or the operators as functions require unique identifiers to be generated:
Both
f
andg
must be unique. This code is currently a problem.since it generates
This is currently handled by generating additional uids in the lexical pass since no other stage can generate unique ids.
Instead, the
unique
should be threaded though all stages so every stage can useunique
and know that no other part of compilation is using the sameuid
.