aboutsummaryrefslogtreecommitdiff
path: root/chapter/3/message-passing.md
diff options
context:
space:
mode:
Diffstat (limited to 'chapter/3/message-passing.md')
-rw-r--r--chapter/3/message-passing.md3
1 files changed, 3 insertions, 0 deletions
diff --git a/chapter/3/message-passing.md b/chapter/3/message-passing.md
index 5a67b7d..3a27a40 100644
--- a/chapter/3/message-passing.md
+++ b/chapter/3/message-passing.md
@@ -1,7 +1,9 @@
---
layout: page
title: "Message Passing and the Actor Model"
+tag: "message passing"
by: "Nathaniel Dempkowski"
+subtitle: "This is a description that will be the subtitle."
---
## Introduction
@@ -203,6 +205,7 @@ Cloud Haskell is an extension of Haskell which essentially implements an enhance
One of the largest improvements over Erlang is the introduction of typed channels for sending messages. These provide guarantees to the programmer about the types of messages their actors can handle, which is something Erlang lacks. In Erlang, all you have is dynamic pattern matching based on values patterns, and the hope that the wrong types of message don't get passed around your system. Cloud Haskell processes can also use multiple typed channels to pass messages between actors, rather than Erlang's single untyped channel. Haskell's monadic types make it possible for programmers to use a programming style, where they can ensure that pure and effective code are not mixed. This makes reasoning about where side-effects happen in your system easier. Cloud Haskell has shared memory within an actor process, which is useful for certain applications. This might sound like it could cause problems, but shared-memory structures are forbidden by the type system from being shared across actors. Finally, Cloud Haskell allows for the serialization of function closures, which means that higher-order functions can be distributed across actors. This means that as long as a function and its environment are serializable, they can be spun off as a remote computation and seamlessly continued elsewhere. These improvements over Erlang make Cloud Haskell a notable project in the space of process-based actors. Cloud Haskell is currently supported and also has developed the Cloud Haskell Platform, which aims to provide common functionality needed to build and manage a production actor system using Cloud Haskell.
+
## Communicating event-loops
The communicating event-loop model was introduced in the E language, {% cite Miller:2005:CSP:1986262.1986274 --file message-passing %} and is one that aims to change the level of granularity at which communication happens within an actor-based system. The previously described actor systems organize communication at the actor level, while the communicating event model puts communication between actors in the context of actions on objects within those actors. The overall messages still reference higher-level actors, but those messages refer to more granular actions within an actor's state.