[bitc-dev] Mutable and Const once again
swaroop at cs.jhu.edu
Wed Aug 20 18:16:30 CDT 2008
Jonathan S. Shapiro wrote:
> On Wed, 2008-08-20 at 17:24 -0400, Swaroop Sridhar wrote:
>> In the case of defunion, should the union itself be mutable only if all
>> shallow fields in all legs are mutable?
> Yes. This must be the case, because we cannot know which leg we will be
> handed. However, we exclude the tag value for this purpose, since that
> field isn't really visible in any case.
>> The present rule (which says that the union is mutable if all
>> constructors only have mutable fields) might not be too bad in practice.
>> But, it seems unintuitive since it creates an artificial relation
>> between the mutually exclusive constructor legs.
> I tend to agree, but I can't generate any other sensible
Here is an interpretation which is possibly consistent:
(1) In the case of structures, the mutating of the entire structure is
equivalent to mutating all of the individual fields. Therefore, its
mutability is dependent on (rather is defined by) the mutability of its
(2) In the case of unions, the mutating the union corresponds to
mutating the tag, which is independent of the mutability of any of its
constructor-fields. The locations holding the various constructions of
the union are permitted to change type (and therefore mutability) when
the tag changes.
More information about the bitc-dev