In ML
A signature defines a particular interface
Any structure that satisfies that interface can be used where that interface is expected
- For instance, in a functor application
A structure can have more than is required by the signature
- More operations, more general/polymorphic operations, more details of implementation of the types