Method syntax ============= Definition syntax ----------------- The parser needs to set a flag if it an identifier is followed by a dot. 1. func SomeThing.get_number() -> int func var SomeThing.set_number(int num) 2. func SomeThing.get_number() -> int func SomeThing.set_number(int num) var 3. func SomeThing.get_number() -> int func SomeThing var.set_number(int num) 4. func SomeThing.get_number() -> int func SomeThing.var set_number(int num) 5. func SomeThing.get_number() -> int func SomeThing.set_number var(int num) 5. func SomeThing.get_number() -> int func SomeThing.set_number!(int num) Call syntax ----------- s.set_number(1) s var.set_number(1) s.var set_number(1) s.set_number var(1) s.set_number!(1) The ! syntax is the by far most user-friendly. But how to extend it to other qualifiers? aliased, threaded, writeonly etc. Perhaps something like this: func SomeThing.set_number!(int num) func SomeThing.set_number threaded(int num) func SomeThing.set_number threaded!(int num) s.set_number!(1) s.set_number threaded(1) s.set_number threaded!(1) Things to decide ---------------- * Should the "this" parameter always be passed by reference? It is rarely any meaningful to pass it by value. * At least "var"-less value receivers should be disallowed.