Open MostAwesomeDude opened 8 years ago
Note that one of the problems is related to module loading. Suppose that some module exports some interface IFace
. Then two other modules, in a diamond diagram, both import that module and export objects which use IFace
as a guard or auditor. It would seem that IFace
should be structural, not nomative, but objects are not required to prove that they are structural if they are built with composition which the interfaces cannot prove is correct.
This situation reduces interfaces to an advisory mechanism at best.
We had a chat on IRC. We'll need to talk more later.
Another problem: Objects like Int
don't actually implement the Interface
interface! This is the cause of this annoying bug:
▲> help(42)
TRACE: ["In To obtain help on an object, try: help(anObject).run(42):"]
TRACE: ["In Int.getDocstring():"]
Parse error: Message refused: (Int, Atom(getDocstring/0), [])
As of 04c0b70b4201860c634ccce21a7a32766d5f2914, Int
and friends now have automatically-generated correct interface methods.
We need to figure out the right story for the builtin objects using non-generated interfaces. Should we just stop doing that?
Named params were added to interfaces in b3d901e.
The entirety of the interface subsystem needs an overhaul. In particular:
<computed interface>
is one of the most useless strings I've ever committed.allegedly()
.