On 31 May 2011 22:43, info@tomsik.cz info@tomsik.cz wrote:
Example from my previous reply to Randal for illustration:
Point new: [x: 3, y: 4, printOn: aStream].
Always left-to-right syntax, always one argument, possible multiple receivers and messages, syntax sugar for closures, closure always have only one argument which is also implicit receiver - you can't deny it's at least interesting to think about such kind of uniformity.
Absolutely. It's called the lambda calculus. And it's very interesting to work things out using lambda calculus, and figure out the semantics of statements... but would you really want to program in the lambda calculus?
Even the textbooks allow multiple parameter functions, with the understanding that \xyz <whatever> is really \x \y \z <curried whatever.
frank
Lambda calculus has different purpose (evaluation), this is sequence of orders (no return value) in logic left-to-right order.
Actually I'd like to see something very different (in hypertalk style) and with "smart" syntax like:
Account>>deposit amount = increase balance by amount. SomeScript>>doSomethingWith account = deposit amount(100) to account.
This is just sketch, prototype in my head, which wasn't crystalized yet, but it's IMHO interesting approach and could improve readability too.
However left-to-right tell-dont-ask style improves design and is also much easier to read and "scan". (I do write a lot of code this way so I can compare)
It is also very natural for people and their thinking. (we usually don't want to GET/EVALUATE something, we want things to be DONE)
I do not need low-level support in language, I can already code this way, but every interaction with existing library is just pain... Hm, as I think about it, maybe I don't need to rewrite libraries, maybe some kind of dynamic wrapper could be enough...
I'm curious for your opinions. It's very enlightening discussion, thx for that.