|
|
|
|
@ -32,12 +32,12 @@
|
|
|
|
|
|
|
|
|
|
Goblins implements the |
|
|
|
|
@link["https://en.wikipedia.org/wiki/Actor_model"]{actor model} |
|
|
|
|
on top of Racket / scheme.@actors-note{ |
|
|
|
|
on top of Racket / Scheme.@actors-note{ |
|
|
|
|
Sussman and Steele famously came to the conclusion that there was in |
|
|
|
|
fact no difference between actor-style message passing and procedure |
|
|
|
|
application in the lambda calculus, and indeed both are similar. |
|
|
|
|
However, there is a significant difference between synchronous |
|
|
|
|
call-and-return procedure application (which is what scheme implements |
|
|
|
|
call-and-return procedure application (which is what Scheme implements |
|
|
|
|
in its most general form, and between actors in Goblins is handled |
|
|
|
|
by @racket[$]) and asynchronous message passing (which in Goblins |
|
|
|
|
is handled with @racket[<-]).} |
|
|
|
|
@ -80,7 +80,7 @@ Goblins' extensions to these ideas are:
|
|
|
|
|
@link["http://www.erights.org/"]{E}-style promise approach. |
|
|
|
|
It could be that coroutines are re-added, but would have to be done |
|
|
|
|
with extreme care; section 18.2 of that same thesis for an |
|
|
|
|
explaination of the challenges and a possible solution for |
|
|
|
|
explanation of the challenges and a possible solution for |
|
|
|
|
introducing coroutines.}} |
|
|
|
|
@item{Raw message passing without a clear way to get values back can |
|
|
|
|
be painful. |
|
|
|
|
@ -93,7 +93,7 @@ Goblins' extensions to these ideas are:
|
|
|
|
|
The kind of value that promises give us can be constructed manually |
|
|
|
|
by providing return addresses to @racket[<-np], but this is painful |
|
|
|
|
given how common needing to operate on the result of an operation is.}} |
|
|
|
|
@item{Goblins composes with all the existing machinery of Racket/scheme, |
|
|
|
|
@item{Goblins composes with all the existing machinery of Racket/Scheme, |
|
|
|
|
including normal procedure calls. |
|
|
|
|
Instead, Goblins builds its abstractions on top of it, but none of this |
|
|
|
|
needs to be thrown away.@actors-note{ |
|
|
|
|
|