Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
A signature is similair to an interface, it specifies fields.
A signature can extend classes, interface and other signatures.
A type defined by a signature can be used as a parameter or variable type.
Signatures work very similair to interfaces in java, except that they do not have to be implemented in the baseclass.
You can request "signature HasPrintln
{ void println( Object value ); }" and be passed a PrintStream or a PrintWriter
This will more closely bind static and dynamic typing by having a bit of both.
Signatures will most commonly be used at interface points with librarys, this will give more obvious error messages, and earlier detection of problems.
Signatures are also a place for an automatic document generator to get information about what a method expects as input.
At runtime their can either be just a Object as it would be now for dynamic typed pieces of code, or via an interface and the reflection.Proxy systems avaialble in java.
I propose this as a partial sollution against the hard to read error messages when having problems caused by ducktyping, and the brittle baseclass problem. (such as with templates in c++)