Actor Model
The concept of the actor programming model is very simple-our program components can be decoupled by replacing direct function calls with asynchronous messages. Different implementations of the Actor Model add other features around this idea, but at minimum, the decoupled components (the actors) include a message queue, which is thread-safe and acts as a buffer if messages come faster than the actor can process them. This is how the F# MailboxProcessor
works.
MailboxProcessor
The MailboxProcessor
class in the FSharp.Core
library is used to build concurrent actors. It has some limitations, such as not being able to do interprocess communication or to persist messages in the queue in case our application crashes. But it is a very good way to easily include actors in our F# program without any additional dependencies.
As an exercise, we are going to build a dummy chat application, which includes a couple of bot users generating random messages and a human user, you. Let...