(GADTs) have received much attention recently in the fp community. They generalize the type-parameterized datatypes by permitting constructors to produce different type-instantiations of the same datatype. We show that existing oopl such as Java and C# can express GADT definitions, and a large class of GADT-manipulating programs, through the use of generics, subclassing, and virtual dispatch. However, some programs can be written only through the use of redundant run-time casts. We propose a generalization of the type constraint mechanisms of C# and Java to avoid the need for such casts, present a Visitor pattern for GADTs, and describe a switch construct as an alternative to virtual dispatch on datatypes. This paper is, of course, related to the other items posted here about GADTs. The examples in the introduction might be somewhat relevant to the recent discussion about the static versus dynamic features of Java, and its type system.
C. Schneider, A. Zündorf, and J. Niere. Workshop on Directions in Software Engineering Environments in 26th international conference on software engineering, Edinburgh, Scotland, UK, (May 2004)
R. Wirfs-Brock, and B. Wilkerson. Proc. ACM SIGPLAN Conf. Object-Oriented Programming,
Systems, Languages and Applications (OOPSLA), page 71--75. (October 1989)
R. Wirfs-Brock, and B. Wilkerson. Proc. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), page 71--75. ACM Press, (October 1989)