SlideShare a Scribd company logo
Concurrent
Applications with
F# Agents
presented by

Rachel Reese

Twitter

#fsharp
#codemash
@rachelreese
@fireflylogic
What are F#
agents?

F#’s implementation of Erlang-style
message passing
(also in Clojure, Scala, Elixir (and many others))
[But there are differences.]
What is Erlangstyle message
passing?

Erlang’s message
passing is based
on the actor
model devised by
Carl Hewitt et al.
in 1973.
dynamic creation of actors

What is the
actor model?

inclusion of actor addresses in
messages
interaction only through direct
asynchronous message passing

no restriction on message
arrival order
An actor is an independent computational entity which
contains a queue, and receives and processes messages.

What is an
actor?

Everything

is an

Actor
Determine what to do with the
next incoming message

What can an
actor do?

Create more actors

Send messages to another actor
“One actor is no actor. They come in systems.”
- Carl Hewitt
What does a
system of
actors look
like?

from: http://www.developerfusion.com/article/140677/writing-concurrent-applications-using-fagents/
What does a
system of
actors look
like?

Genes maestros de regulación, from: http://cienciasdejoseleg.blogspot.com/2011/10/genesmaestros-de-regulacion.html
Concurrent Applications with F# Agents
What does a
system of
actors look
like?

Tokyo Subway Map, from: http://www.speedymole.com/Tubes/Tokyo/tokyo-subway-map.html
dynamic creation of actors

What is the
actor model?

inclusion of actor addresses in
messages
interaction only through direct
asynchronous message passing

no restriction on message
arrival order
What are F#
agents?

F#’s implementation of Erlang-style
message passing
(also in Clojure, Scala, Elixir (and many others))
[But there are differences.]
Asynchronous
Non-blocking, specifically in
reference to I/O operations
(not necessarily parallel, can
be sequential.)

Concurrent
Multiple operations
happening at the same
time (not necessarily in
parallel).

Definitions
Parallel
Multiple operations processed
simultaneously.
Demos:
Intro, Replies, Scanning, Emailer
What are some
major
differences
between F#
agents &
Erlang’s
message
passing?

F# agents are
contained inprocess; they
are not
distributed.

Lack of
support for
supervisors.

No built-in
durable
mailboxes.
Demo:
FSharp.Actor framework
Actors and Agents

F# in general, and Async,
Concurrency, & Parallelism

 Fsharp.Actor
 TPL Dataflow
 ActorFx

Additional
Resources

 Try F#
 F# Koans

 Orleans
 Hewitt, Meijer, and Szyperski C9
 Async and Parallel Design Patterns
in F# Agents
 An Introduction to Agents
 Image pipeline using agents
 Building an actor in F# w/ higher
throughput than Akka or Erlang

 F# MailboxProcessor
 Building clean and cohesive
concurrent systems with F# agents

 SkillsMatter
 FsSnip
 F# Chat on IRC or JabbR
 The Hitchhiker’s Guide to
Concurrency
 F# Asynchronous
Programming Model
Thanks!
Rachel Reese
Twitter: @rachelreese
Email: rachel.reese@fireflylogic.com

Firefly Logic, Inc.
1000 Main Street #201
Nashville, TN 37206

http://fireflylogic.com

More Related Content

What's hot (20)

PPTX
Js tips & tricks
Asia Tyshchenko
 
PPTX
Introduction to Python Programming
Md. Shafiuzzaman Hira
 
PDF
Swift, a quick overview
Julian Król
 
PDF
EMPEX LA 2018 - Inclusion Starts with Docs
Pete Gamache
 
PPTX
Dependency Injection Pattern
Luis Ginanjar
 
PPTX
Flow control in Python
Md. Shafiuzzaman Hira
 
PPTX
Laravel 5 and SOLID
Igor Talevski
 
ZIP
Why Scala for Web 2.0?
Alex Payne
 
KEY
Scala
guest8996422d
 
PPTX
Break Free with Managed Functional Programming: An Introduction to F#
Dave Fancher
 
PPTX
Break Free with Managed Functional Programming: An Introduction to F#
IndyMobileNetDev
 
PPTX
DDD loves Actor Model and Actor Model loves Elixir
Gianluca Padovani
 
PDF
Functional programming ruby mty
AdrianGzz2112
 
PDF
Actor Patterns and NATS - Boulder Meetup
Apcera
 
PPTX
Haskell @ HAN Arnhem 2013-2014
Tjeerd Hans Terpstra
 
PDF
Purpose of programming and the Clojure Nirvana
João Vazão Vasques
 
PDF
Value Objects
Dhaval Dalal
 
PDF
Introduction to python
Rivalri Kristianto Hondro
 
PDF
Альона Тудан “Using Java library in Soap UI”
Dakiry
 
PDF
Mining Stack Overflow to Tun the IDE into a Self-confident Programming Prompter
Luca Ponzanelli
 
Js tips & tricks
Asia Tyshchenko
 
Introduction to Python Programming
Md. Shafiuzzaman Hira
 
Swift, a quick overview
Julian Król
 
EMPEX LA 2018 - Inclusion Starts with Docs
Pete Gamache
 
Dependency Injection Pattern
Luis Ginanjar
 
Flow control in Python
Md. Shafiuzzaman Hira
 
Laravel 5 and SOLID
Igor Talevski
 
Why Scala for Web 2.0?
Alex Payne
 
Break Free with Managed Functional Programming: An Introduction to F#
Dave Fancher
 
Break Free with Managed Functional Programming: An Introduction to F#
IndyMobileNetDev
 
DDD loves Actor Model and Actor Model loves Elixir
Gianluca Padovani
 
Functional programming ruby mty
AdrianGzz2112
 
Actor Patterns and NATS - Boulder Meetup
Apcera
 
Haskell @ HAN Arnhem 2013-2014
Tjeerd Hans Terpstra
 
Purpose of programming and the Clojure Nirvana
João Vazão Vasques
 
Value Objects
Dhaval Dalal
 
Introduction to python
Rivalri Kristianto Hondro
 
Альона Тудан “Using Java library in Soap UI”
Dakiry
 
Mining Stack Overflow to Tun the IDE into a Self-confident Programming Prompter
Luca Ponzanelli
 

Viewers also liked (9)

PPTX
Consuming Data with F# Type Providers
Rachel Reese
 
PPTX
iOS App Development with F# and Xamarin
Rachel Reese
 
PPTX
Getting Started with F#
Rachel Reese
 
PDF
Full-Stack, Message-oriented Programming w/ Akka.NET Actors
petabridge
 
PPTX
Seattle kafka meetup nov 2015 published siphon
Nitin Kumar
 
PPTX
History of F#, and the ML family of languages.
Rachel Reese
 
PPTX
CQRS Evolved - CQRS + Akka.NET
David Hoerster
 
PPTX
Patterns and practices for real-world event-driven microservices
Rachel Reese
 
PDF
Akka persistence == event sourcing in 30 minutes
Konrad Malawski
 
Consuming Data with F# Type Providers
Rachel Reese
 
iOS App Development with F# and Xamarin
Rachel Reese
 
Getting Started with F#
Rachel Reese
 
Full-Stack, Message-oriented Programming w/ Akka.NET Actors
petabridge
 
Seattle kafka meetup nov 2015 published siphon
Nitin Kumar
 
History of F#, and the ML family of languages.
Rachel Reese
 
CQRS Evolved - CQRS + Akka.NET
David Hoerster
 
Patterns and practices for real-world event-driven microservices
Rachel Reese
 
Akka persistence == event sourcing in 30 minutes
Konrad Malawski
 
Ad

Similar to Concurrent Applications with F# Agents (20)

PPTX
F# in social gaming
Yan Cui
 
PDF
Comparing implementations of the actor model
Jim Roepcke
 
PPTX
Domain Modeling & Full-Stack Web Development F#
Kevin Avignon
 
PDF
Actor Clustering with Docker Containers and Akka.Net in F#
Riccardo Terrell
 
PPTX
Akka Actors
Dylan Forciea
 
PPTX
.NET Fest 2018. Vagif Abilov. Akka + F# = Akkling
NETFest
 
PPTX
Reactive Programming using Actor Model in Akka
StephenKoc1
 
PPTX
F# Server-side programming
7sharp9
 
PDF
Build Cloud Applications with Akka and Heroku
Salesforce Developers
 
PPTX
Creating scalable message driven solutions akkadotnet
David Hoerster
 
PDF
Actors: Not Just for Movies Anymore
VictorOps
 
PDF
Reactive applications with Akka.Net - DDD East Anglia 2015
Anthony Brown
 
PDF
Actor Model Akka Framework
Harinath Krishnamoorthy
 
PDF
Actor Model and C++: what, why and how? (March 2020 Edition)
Yauheni Akhotnikau
 
PPTX
Actors drammen
Reidar Sollid
 
PPTX
Actor systems
Derek Morr
 
PPTX
Oop2011 actor presentation_stal
Michael Stal
 
PPTX
Akka.Net Overview
Geoffrey Vandiest
 
PDF
F# and SignalR for a FastWeb
Riccardo Terrell
 
PDF
Sharing-akka-pub
Hendri Karisma
 
F# in social gaming
Yan Cui
 
Comparing implementations of the actor model
Jim Roepcke
 
Domain Modeling & Full-Stack Web Development F#
Kevin Avignon
 
Actor Clustering with Docker Containers and Akka.Net in F#
Riccardo Terrell
 
Akka Actors
Dylan Forciea
 
.NET Fest 2018. Vagif Abilov. Akka + F# = Akkling
NETFest
 
Reactive Programming using Actor Model in Akka
StephenKoc1
 
F# Server-side programming
7sharp9
 
Build Cloud Applications with Akka and Heroku
Salesforce Developers
 
Creating scalable message driven solutions akkadotnet
David Hoerster
 
Actors: Not Just for Movies Anymore
VictorOps
 
Reactive applications with Akka.Net - DDD East Anglia 2015
Anthony Brown
 
Actor Model Akka Framework
Harinath Krishnamoorthy
 
Actor Model and C++: what, why and how? (March 2020 Edition)
Yauheni Akhotnikau
 
Actors drammen
Reidar Sollid
 
Actor systems
Derek Morr
 
Oop2011 actor presentation_stal
Michael Stal
 
Akka.Net Overview
Geoffrey Vandiest
 
F# and SignalR for a FastWeb
Riccardo Terrell
 
Sharing-akka-pub
Hendri Karisma
 
Ad

Recently uploaded (20)

PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Biography of Daniel Podor.pdf
Daniel Podor
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 

Concurrent Applications with F# Agents

  • 1. Concurrent Applications with F# Agents presented by Rachel Reese Twitter #fsharp #codemash @rachelreese @fireflylogic
  • 2. What are F# agents? F#’s implementation of Erlang-style message passing (also in Clojure, Scala, Elixir (and many others)) [But there are differences.]
  • 3. What is Erlangstyle message passing? Erlang’s message passing is based on the actor model devised by Carl Hewitt et al. in 1973.
  • 4. dynamic creation of actors What is the actor model? inclusion of actor addresses in messages interaction only through direct asynchronous message passing no restriction on message arrival order
  • 5. An actor is an independent computational entity which contains a queue, and receives and processes messages. What is an actor? Everything is an Actor
  • 6. Determine what to do with the next incoming message What can an actor do? Create more actors Send messages to another actor
  • 7. “One actor is no actor. They come in systems.” - Carl Hewitt
  • 8. What does a system of actors look like? from: http://www.developerfusion.com/article/140677/writing-concurrent-applications-using-fagents/
  • 9. What does a system of actors look like? Genes maestros de regulación, from: http://cienciasdejoseleg.blogspot.com/2011/10/genesmaestros-de-regulacion.html
  • 11. What does a system of actors look like? Tokyo Subway Map, from: http://www.speedymole.com/Tubes/Tokyo/tokyo-subway-map.html
  • 12. dynamic creation of actors What is the actor model? inclusion of actor addresses in messages interaction only through direct asynchronous message passing no restriction on message arrival order
  • 13. What are F# agents? F#’s implementation of Erlang-style message passing (also in Clojure, Scala, Elixir (and many others)) [But there are differences.]
  • 14. Asynchronous Non-blocking, specifically in reference to I/O operations (not necessarily parallel, can be sequential.) Concurrent Multiple operations happening at the same time (not necessarily in parallel). Definitions Parallel Multiple operations processed simultaneously.
  • 16. What are some major differences between F# agents & Erlang’s message passing? F# agents are contained inprocess; they are not distributed. Lack of support for supervisors. No built-in durable mailboxes.
  • 18. Actors and Agents F# in general, and Async, Concurrency, & Parallelism  Fsharp.Actor  TPL Dataflow  ActorFx Additional Resources  Try F#  F# Koans  Orleans  Hewitt, Meijer, and Szyperski C9  Async and Parallel Design Patterns in F# Agents  An Introduction to Agents  Image pipeline using agents  Building an actor in F# w/ higher throughput than Akka or Erlang  F# MailboxProcessor  Building clean and cohesive concurrent systems with F# agents  SkillsMatter  FsSnip  F# Chat on IRC or JabbR  The Hitchhiker’s Guide to Concurrency  F# Asynchronous Programming Model
  • 19. Thanks! Rachel Reese Twitter: @rachelreese Email: [email protected] Firefly Logic, Inc. 1000 Main Street #201 Nashville, TN 37206 http://fireflylogic.com