Smalltalk-style syntax

User:Kevin Reid's idle speculation on an alternate surface syntax for E.

Translated mint example:

makeMint does { run: name = the any { [sealer, unsealer] = makeBrandPair run: name. mint does { __printOn: out = the void { out print: `<$name's mint>`. }        makePurse: var balance an (int >= 0) = the any { decr does { run: amount an (0..balance) = the void { set balance = balance - amount. }            }.             purse does { __printOn: out = the void { out print: ``. }                getBalance = the int { balance } sprout    = the any { mint makePurse: 0 } getDecr   = the any { sealer seal: decr } deposit: amount an int from: src = the void { (unsealer unseal: src getDecr) run: amount. set balance = balance + amount. }            }.             ^ purse }    }.     ^ mint } }

Verb mapping
The traditional Smalltalk/ObjC form would include an additional colon at the end of the >0-arg verbs, but this would drop it for compatibility with normal E protocols.

There would also need to be a way to use arbitrary verbs as normal E surface syntax provides (the "verb-string" syntax).