On Monday, December 29, 2014, William ML Leslie <
[email protected]> wrote:

> On 27 December 2014 at 07:10, Jonathan S. Shapiro <[email protected]
> <javascript:;>> wrote:
> > So here's my question: if we intend that i and f should be unboxed
> within S,
> > isn't it sufficient to unify %r_S, %r_i, and %r_f?
> >
> > I understand that this doesn't address the question of placement within
> S.
> > What I'm wondering is whether "unboxed" is best understood as a shorthand
> > that means "unify my region with that of my container". In the case of a
> > struct field, the container is the struct. In the case of a let-bound
> > variable, the container is the frame (or more accurately, the scope,
> which
> > is in turn contained by the frame). Conversely, "boxed" simply means that
> > there is no presumptive relation between the two regions (though
> constraints
> > might add such relations).
> >
> > I'm not sure whether this is practically valuable from a compilation
> > standpoint, but it would sure be nice to simplify the core semantics if
> this
> > seems plausible.
> >
> > Is this a sound interpretation of the meaning of unboxed and boxed?
>
> Seems a bit awkward, whether you infer region variables and/or allow
> them to be specified manually.
>
> The region that contains the datatype you are defining (which is
> probably parametric) should be considered special within the type
> definition, because it is implied that it is at least as large as the
> regions of its fields, and those implicit constraints need to be
> maintained.  And I think that in practice, you won't expect to force
> the programmer to spell this out.  More likely, they will write
> something like:
>
> datatype !mutability List ('a : Type in %ra) %rlist {
>     Nil : List 'a
>     Cons {
>         head : ref immutable 'a in %ra;
>         tail : ref !mutability List ('a in %ra) in %rlist;
>     }
> }
>
> And expect the compiler to understand this as "head has type 'a in a
> region subsumed by %ra", that is, the %ra described in the final type
> lives at least as long as both the head %ra and any element %ra's in
> the tail.
>
> The nice thing about this example is that even *if* the two %rlist
> turned out to be the same, you may still want the tail to be boxed.


I would have expected a description of where the Cons cell is allocated.



>
> --
> William Leslie
>
> Notice:
> Likely much of this email is, by the nature of copyright, covered
> under copyright law.  You absolutely MAY reproduce any part of it in
> accordance with the copyright law of the nation you are reading this
> in.  Any attempt to DENY YOU THOSE RIGHTS would be illegal without
> prior contractual agreement.
> _______________________________________________
> bitc-dev mailing list
> [email protected] <javascript:;>
> http://www.coyotos.org/mailman/listinfo/bitc-dev
>
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to