On Tue, Jul 22, 2014 at 8:15 AM, Jonathan S. Shapiro <[email protected]> wrote:

>
> The interesting part about type state was the fact that it tied type with a
> (value, sequence point) pair.

If I may continue on in this regard, the interesting part of the
(value, sequence point) pair is the notion that it can only be
constructed in a specific fashion, the pair has synergy..
http://cap-lore.com/CapTheory/Synergy/

neither value or sequence point alone/destructured can convey the fact
that this value and this sequence point are conjoined if you can take
two (value, sequence point) pairs and scramble them, you lose the
synergy whether you do actually scramble them or not.

the ability to hide the constructor allows one to create a
ValueConstraintPair(value:'a, constraint:'b) to then introduce
'constraint on a specific value', the ability to hide the 'b
constructor allows you keep people from then creating a
ValueConstraintPair caller which avoids the constraint,

then link time type validation keeps libfoo's 'b separate from libbar's 'b

in the first case i gave of right triangle it's the synergy between
the value and it's type,
through a ValueConstraintPair it can be between a value and some other type,
with typestate the property is hidden somewhere intrinsic to the compiler

while the original example brought upon this discussion of
constraints, it's this notion of synergy that i'm probably after.
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to