Sunday, December 25, 2005

tagged types

lightweight version of struct encapsulation and deriving operators and casts.

Are we comparing apples to oranges in our code? Add tags:

int<Apple> apples; int<Orange> oranges;

Insert the tag at the root (where apples are first used) and automatically force all ints to be polymorphic int<a>

Anything that works for an int works for an int<foo>, but we can perform deep queries about what kinds of casts and derived functions and operators are occuring, and where polymorphism is being disambiguated.

No comments :