aboutsummaryrefslogtreecommitdiff
path: root/chapter/4
diff options
context:
space:
mode:
Diffstat (limited to 'chapter/4')
-rw-r--r--chapter/4/dist-langs.md6
1 files changed, 3 insertions, 3 deletions
diff --git a/chapter/4/dist-langs.md b/chapter/4/dist-langs.md
index ec9de35..d4fbed6 100644
--- a/chapter/4/dist-langs.md
+++ b/chapter/4/dist-langs.md
@@ -143,7 +143,7 @@ Messages can be synchronous or asynchronous, point-to-point or broadcast style.
In the actor model, concurrent entities do not share state as they do in DSM.
Each process, object, actor, etc., has its own address space.
-The model maps well to single multicore machines as well as clusters of machines.
+The model maps well to single multicore machines as well as to clusters of machines.
Although an underlying system is required to differentiate between local and remote messages, the location of processes, objects, or actors can be transparent to the application programmer.
#### Erlang
@@ -154,7 +154,7 @@ These processes may be colocated on the same node or distributed amongst a clust
Processes in Erlang communicate by message passing.
Specifically, a process can send an asynchronous message to another process' *mailbox*.
-At some future time, the receiving process may enter a *receive* clause, which searches the mailbox for the first message that matches a set of patterns.
+At some future time, the receiving process may enter a *receive* clause, which searches the mailbox for the first message that matches one of a set of patterns.
The branch of code that is executed in response to a message is dependent on the pattern that is matched.
In general, an application written in Erlang is separated into two broad components: *workers* and *monitors*.
@@ -166,7 +166,7 @@ Worker processes are "linked" by monitor processes which implement the fault-tol
Erlang, first implemented in Prolog, has the features and styles of a functional programming language.
Variables in Erlang are immutable; once assigned a value, they cannot be changed.
Because of this, loops in Erlang are written as tail recursive function calls.
-Although this at first seems like a flawed practice (to traditional procedural programmers), recursive calls do not grow the current stack frame, but instead replace it.
+Although this at first seems like a flawed practice (to traditional procedural programmers), tail recursive calls do not grow the current stack frame, but instead replace it.
It is worth noting that stack frame growth is still possible, but if the recursive call is "alone" (the result of the inner function is the result of the outer function), the stack will not grow.
#### Cloud Haskell