First class modules (was Existential Typing)
Tom Pledger
Tom.Pledger@peace.com
Fri, 2 Nov 2001 09:45:17 +1300
Simon Peyton-Jones writes:
:
| A key design choice in our system is to use *nominal* not *structural*
| typing. The structural choice makes perfect sense, but it leads to
| complications we don't have (as well as benefits). So we don't have
| structural subtyping, and it would not be easy to add it.
|
| On the other hand, one could add nominal subtyping without too
| much difficulty:
|
| record A = { x,y :: Int }
| record B <: A = { z :: Int }
|
| We have not done that yet, but Mark thinks it would could be done
| without bad interaction with what we have already.
Hi.
Could a function of type A->Int be applied to an argument of type B?
That's arguably the most difficult part.
Regards,
Tom