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.

Keean.
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to