> BTW, those typed returns on sockets that Shawn mentioned sounded
> interesting. IIRC Modula-3 also had some approach to worrying about data
> exchange between older and newer versions of the same program.
Modula-3 (actually the Network Objects library) used subtyping to handle this. Successive versions of an interface are declared as subtypes of the previous version, and the type system will resolve a network object binding to the appropriate version.
Hard to see how this could be done in a purely functional setting.
robin