Yes I think it can be done using tuple types and tagged unions and I posted an example.
All it relied on was consistent memory layout for records and tagged unions. You just have a record that has the common data in a header section, and the tagged union of records in a body section. There's a reason its called an 'object header' right? Keean. On 2 Mar 2015 08:30, "Matt Rice" <[email protected]> wrote: > On Sun, Mar 1, 2015 at 11:49 PM, Keean Schupke <[email protected]> wrote: > > > > On 2 Mar 2015 07:32, "Matt Rice" <[email protected]> wrote: > >> > >> On Sun, Mar 1, 2015 at 11:17 PM, Keean Schupke <[email protected]> > wrote: > >> > > >> > On 2 Mar 2015 04:10, "Matt Rice" <[email protected]> wrote: > >> >> > >> >> On Fri, Feb 27, 2015 at 5:21 AM, Keean Schupke <[email protected]> > >> >> wrote: > >> >> > The problem with casts is they can fail, even this : > >> >> > > >> >> > case t of > >> >> > (x :: X) -> ... > >> >> > otherwise -> ... > >> >> > > >> >> > Would be better, but I would prefer to constrain 't' to a > type-class. > >> >> > >> >> I don't exactly see a cast there, in general since I apparently > didn't > >> >> make it clear the thought was that this would be implemented in the > >> >> compiler, as part of a is_it_safe_cast_call_sandwich(sym,type), with > >> >> the object header id being either the tag of a tagged union, or some > >> >> form of type representation mechanism. > >> > > >> > I guess there is some confusion here. What is an is it safe cast call? > >> > With > >> > a case statement there is a clear failure path, are you suggesting > >> > failure > >> > to cast is an exception? > >> > >> a compiler error, that is we can consider it one of two ways, it's > >> either converting a value of SomeType to to a value conforming to > >> SomeTypeConstraint, or a function expecting a > >> f(arg:SomeTypeConstraint) to a function accepting a SomeType as an > >> argument, so it checks that the type conforms to the structure before > >> static casting. > > > > Subtyping like this is only needed for dynamic runtime stuff. If the > > compiler can statically determine the exact type you don't need a super > > type, you just rely on parametric polymorphism and type - classes. > > Right, which is why i need a 2nd mechanism like tagged unions and/or > type representations to solve dynamic runtime stuff problem, there is > a lingering question I have as to why it casts on the object header > id, rather than using tagged union and normal types (since I believe > shap said that none of them overlap), > I imagine this has more to do with implementation efficiency than it > has to do with static variable effects (or at least I hope :), > > but I believe that this is 2 distinct problems, can a type conform to > 2 types, and thus share code & symbols, and the runtime identification > of types, anyhow I'm really not exactly clear on the goals (or what > exactly we wish to retain out of subtyping in this) > > Anyhow the goal here was to try and define this in a way that the > assembly can generate something resembling the existing > implementation. > _______________________________________________ > bitc-dev mailing list > [email protected] > http://www.coyotos.org/mailman/listinfo/bitc-dev >
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
