So I've now read the "Objects to Unify Type Classes and GADT" paper twice, and gone back to review several earlier GADT papers as well.
Most of what is here appears to be expressable in BitC already. We have a notion of a sealed type class, for example. We don't currently handle GADTs, but that's a straightforward extension that clearly needs to be done eventually. I think what I am struggling with is the implicit vs. explicit object notion. So far as I can tell, the difference is that explicit objects instantiate their class's type variables, and in doing so, form a representation. Implicit objects instantiate *none* of their class's type variables, and thereby serve as constraints only, wherein the ability to instantiate an object of the appropriate class type (which is stateless and therefore costs nothing to instantiate) serves as witness of membership in the class relation. Is there something here that is more complicated that this? If not, why isn't this just syntactic sugar for things we already have? Not bad syntactic sugar, and worth considering from that perspective, but is there something new here? I feel like I'm missing something important. shap
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
