bit of line wrapping

This commit is contained in:
Torsten Ruger
2015-03-25 17:29:39 +02:00
parent d758a23eb6
commit aee36d9f5f
7 changed files with 99 additions and 82 deletions

View File

@ -18,27 +18,27 @@ And thus parfait can be used at run-time.
It's too simple: just slips off the mind like a fish into water.
Parfait has a brother, the Builtin module. Builtin contains everything that can not be coded in ruby, but we stil need
(things like array access).
Parfait has a brother, the Builtin module. Builtin contains everything that can not be coded in ruby,
but we stil need (things like array access).
#### Example: Message send
It felt a little stupid that it took me so long to notice that sending a message is very closely related to the
existing ruby method Object.send
Off course Object.send takes symbol and the arguments and has the receiver, so all the elements of our Messaage are there.
And the process that Object.send needs to do is exactly that: send that message, ie find the correct method according to
the old walk up the inheritance tree rules and dispatch it.
Off course Object.send takes symbol and the arguments and has the receiver, so all the elements of our
Messaage are there. And the process that Object.send needs to do is exactly that:
send that message, ie find the correct method according to the old walk up the inheritance tree rules and dispatch it.
And as all this happens at runtime, "all" we have to do is code this logic. And since it is at runtime,
we can do it in ruby (as i said, this get's compiled and run, just like the program).
But what about the infinite loop problem:
There was a little step left out: Off course the method gets compiled at compile-time and so we don't just blindly dispatch:
we catch the simple cases that we know about: layout, type instance variables and compile time known functions. Part of
those are some that we just don't allow to be overridden.
Also what in ruby is object.send is Message.send in salama, as it is the message we are sending and which defines all the
data we need (not the object). The object receives, it does not send.
There was a little step left out: Off course the method gets compiled at compile-time and so
we don't just blindly dispatch: we catch the simple cases that we know about:
layout, type instance variables and compile time known functions.
Part of those are some that we just don't allow to be overridden.
Also what in ruby is object.send is Message.send in salama, as it is the message we are sending and
which defines all the data we need (not the object). The object receives, it does not send.