On 6/9/2020 7:00 PM, Kevin Bourrillion wrote:
On Tue, Jun 9, 2020 at 2:18 PM Dan Smith <[email protected] <mailto:[email protected]>> wrote:

    A few things that still make me a bit uneasy, maybe could use more
    noodling:

    - "Inline value" vs. "reference value" makes sense. Then re-using
    "inline" for "inline class" vs. "identity class" is potentially
    confusing. In this context, we're using "inline" as shorthand for
    "inline-capable" and "identity-free". It would sort of be nice if
    we could flip the world and make 'identity' the class declaration
    keyword (although we'd still need a term for the absence of that
    keyword).


My current way of spinning this to myself is that a class being "inline" means it /enables/ possible inlining, /and/ that referring to it as an "inline" type (its concrete type) is another step that also /enables/ possible inlining, and in the end the VM will do what it wants, subject to those limitations. So, I can see the term working at both levels...

Perhaps the problem is that we've put the term on the secondary attribute rather than the primary.  The primary attribute is id-freedom, from which we derive the option to inline.  But we're calling them "inline".



    - The syntax ".val" used to denote an "inline type" is a bit of a
    mismatch. Maybe we want a new syntax. Or maybe we want to rework
    the word "value" into the story so that "inline type" becomes
    "value type".


This was my reaction too. ".val" means "the value itself, that you care about", and ".ref" means "a reference value that points to the value you care about", but I used the word "value" /more/ times in the second phrase. It doesn't feel like this will be clear.

My intention here was to appeal to terms many users already understand: pass by value and pass by reference.  That's why `V.val` is not `V.inline`.


Reply via email to