3 methods are any function that is found from a given value.
4 It can be associated with the type or the value
6 An interface is a set of methods. A concrete type can export an
7 interface and a formal type can require an interface.
9 A value can be combined with a concrete interface to override or augment
10 what it's type natively has. Value methods are not so easily
13 The first arg of a method must match the owner, and other args can be of
16 Interface names are per module.
17 Method names are per interface. When a variable supports multiple
18 interfaces and names don't conflict, interface name can be left out.
20 maybe value method use . and type methods use : ??
21 that would make "case functionname :" tricky to parse.
25 Rather than anon structs, allow struct AND references to be marked as 'follow'
26 so anything behind the object appears in the parent.
27 Then foo.method can possible follow a chain of pointers from foo to find the method.
29 foo might be an inode and have a pointer to a superblock, which has a
30 pointer to a methods struture contains 'getattr'. Then 'foo.getattr'
31 transparently becomes 'foo.super.super_methods.getattr.
33 Question. In what circumstances is 'foo' passed as first argument?
34 Probably it happens by default, but some syntactic escape allows something else
35 to be passed. Maybe foo::something() ??