Pure dynamic casts?
Jarrett Billingsley
jarrett.billingsley at gmail.com
Tue Sep 22 18:21:13 PDT 2009
On Tue, Sep 22, 2009 at 8:48 PM, Steven Schveighoffer
<schveiguy at yahoo.com> wrote:
> Why have pure functions at all? Seriously, all pure function reorderings
> and reuse can be rewritten by human optimization. If we aren't going to
> look for places that pure functions can help optimize, why add them to the
> language, it seems more trouble than its worth?
>
> If all it takes to optimize dynamic casts is to put pure on the function
> signature, have we wasted that much time?
But dynamic downcasting *isn't* pure, unless you can prove that the
reference that you're downcasting is unique.
class Base {}
class Derived : Base {}
struct S
{
Object o;
Derived get()
{
return cast(Derived)o;
}
}
void main()
{
S s;
s.o = new Base();
writeln(s.get());
s.o = new Derived();
writeln(s.get());
}
Dynamic downcasts are not pure. Simply. That's why they're *dynamic*.
Without some kind of uniqueness typing, you cannot prove anything
about the validity of such casts until runtime.
More information about the Digitalmars-d
mailing list