[e-lang] literal-oname?
Kevin Reid
kpreid at mac.com
Tue Aug 15 12:51:04 EDT 2006
On Aug 9, 2006, at 14:42, Mark S. Miller wrote:
> Kevin Reid wrote:
>> Why has this syntax been disabled by default?
...
> 3) I expect that no one other than you would be effected by
> discontinuing the
> literal-oname syntax. From that same previous conversation, I
> thought you said
> that it would be painless for you to stop using it. If I
> misunderstood, my
> apologies.
I no longer remember my reasoning at the time. However, it does seem
straightforward to handle, so I retract my objection.
def "bizarre qualified name" { ... }
becomes
def ::"bizarre qualified name" { ... }
or
{ def ::"bizarre qualified name" { ... } }
or
def simpleName {
to __getAllegedType() {
return meta.context().getSource().asTypeDesc() \
.withFQN("bizarre qualified name")
}
...
}
or
def simpleName {
to __getAllegedType() {
return meta.evaluator().asTypeDesc(meta.context().getSource()) \
.withFQN("bizarre qualified name")
}
...
}
Not strictly relevant:
The last case is what will be necessary if we move to Term-trees for
E, as previously discussed, since the source tree no longer has any E-
specific behaviors. I am currently working on implementing this in E-
on-CL.
This is a slight uglification in several places, but I think it has
the advantage of making the Kernel-E behavior more concentrated in
one object (the exposed evaluator) rather than spread out (and yet
necessarily non-extensible) in the data structure.
You can't sensibly 'define a new ENode' in the current system, since
the evaluator has complex invariants.
But if it's eval(node) instead of node.eval(), and nodes are generic
rather than having Kernel-E structure constraints baked in, then it
is more feasible to work with an extension or other variant of the
language, or a refractive/virtualized evaluator.
--
Kevin Reid <http://homepage.mac.com/kpreid/>
More information about the e-lang
mailing list