JSON
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Dec 15 10:11:37 PST 2010
On 12/15/10 11:49 AM, Robert Jacques wrote:
[JSON]
Apologies for not making the time to review this; I'm very interested in
the topic but I have 121 emails waiting for attention in my inbox, and
each requires a fair amount of work.
> Notes:
> * Does anyone have a suggestion of a good way to attach methods to an
> Algebraic type? And if we can, should we?
This is a very good challenge. Ideally Algebraic would define a method
if and only if all of its possible types define a method with (a) same
name, (b) covariant return types (i.e. return types have a CommonType),
(c) contravariant parameter types (we don't have ContravariantCommonType
in std.traits, but it should be doable). Consider:
class Widget {
long foo(int);
}
class Gadget {
int foo(long);
}
auto a = Algebraic!(Widget, Gadget)(new Widget);
long x = a.foo(42); // should work
x = a.foo(x); // shouldn't compile
That would be awes, and is in fact implementing an optimization called
type casing.
Andrei
More information about the Digitalmars-d
mailing list