SlideShare a Scribd company logo
Introduction to Functional
Programming
with Elixir
Unlearn you some OOP for great good
● OOP is not the only good way to design
software
● Assignment & Control flow are not essential
to programming
● Locks & Semaphores are not essential to
concurrency
Learn you some Functional
Programming for good
Functional Programming
● Another programming paradigm
o Functions as first class citizens
o Higher order functions
o Immutable data
o Pure functions
Pure Functions
● Stateless
● Produces the same output always for the
same input
● No side effects
Functional Programming Languages
● Haskell
● Erlang/Elixir
● Common Lisp and more
● Scala
● JavaScript
● more
The functional programming Boom
● Physical constraints
● Need for:
o Simple concurrency and parallelism
o Easier vertical and horizontal scaling
o Optimal utilization of resources
Emerging Languages
● Go
● Scala
● Erlang
● Elixir
● Rust
● Haskell
● Nim
and more
Elixir?
● Built on top of the Erlang VM
● Compiles down to BEAM bytecode
Wth is Erlang?
● Designed for scalability and real-time
systems
● Functional
● Simplifies concurrent programming
● Fault-tolerant (‘let it crash’ philosophy)
● Bytecode runs on the Erlang VM
Erlang is used by
● Facebook (Chat)
● Amazon
● Whatsapp
● Yahoo!
● Heroku
● Github
● and more
Story of Whatsapp
● 2 Million connections on a single node
● 450 Million users handled by 32 engineers
● Acquired by Facebook for $19 Billion
● Backend powered by Erlang
Elixir
● Dynamic
● Functional
● Built on top of the Erlang VM
o implies Concurrent, Distributed and Fault-tolerant
● 1.0.0 was released in Sep 2014
● Created by Jose Valim
Why use Elixir?
● All the benefits of Erlang
● Easily reuse Erlang libraries
o No additional performance costs
● Better tooling, which allows for greater
productivity
● Better syntax
● Simplified metaprogramming
Concurrency!
Concurrency in erlang/elixir vs other languages
is like branching in git vs subversion.
● Its simple and cheap
Everything is an expression
World of Elixir
Data
Modules
Processes
Datatypes
● Atoms
● Integers
● Floating point numbers
● Binaries
● Tuples
● Lists
● Strings and Character lists
● Maps, Hashdicts and Keyword Lists
Modules
● Means of organizing code
● Contains all named functions
Functions
● Elixir functions are defined by:
o Name
o Arity
● Types of functions
o Anonymous & Inline Anonymous
 inherits scope
o Named
 does not inherit scope
Pattern Matching
● Assert, not assign
● Equals sign isn’t really assignment, its more
like an assertion
● Behaviour of tuples, lists and variables in
pattern matching is important to understand
● Ignore values using _
● Force use variables using ^
Pipeline operator |>
● Formulating transformation of data
● Similar to Linux pipes
● Making functions/methods composable
● Data |> Method 1 |> Method 2 |> Method 3
Live Examples
● Sum, Multiply
● Factorial, Fibonacci, GCD
● List operations
● File operations
● Maps, Typed maps
Tooling
● Mix, a wonderful build system
● First class documentation
o Inline documentation
o Doctests
● Dependency Management using Mix
● Testing library included
Topics not covered
● Mix, `maven` for Elixir
o compatible with hex, the `maven` for Erlang
● OTP
● Metaprogramming
● Protocols
● Structs
● Streams, Enumerables, Collectables
Elixir frameworks
● Phoenix: Web framework
● Ecto: LINQ for Elixir
More: Awesome Elixir List
Questions?
Interested? You can read more here: https://github.com/hashd/LearnStack/blob/master/notes/elixir.md

More Related Content

What's hot (20)

Elixir otp-basics
Elixir otp-basicsElixir otp-basics
Elixir otp-basics
Ruben Amortegui
 
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQLPL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
Reactive.IO
 
Stairway to scala flyer
Stairway to scala flyerStairway to scala flyer
Stairway to scala flyer
dickwall
 
Introduction to Functional Programming and Clojure
Introduction to Functional Programming and ClojureIntroduction to Functional Programming and Clojure
Introduction to Functional Programming and Clojure
Soumendra Daas
 
Sprint Boot & Kotlin - Meetup.pdf
Sprint Boot & Kotlin - Meetup.pdfSprint Boot & Kotlin - Meetup.pdf
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
Introduction to Scala Implicits, Pimp my library and Typeclasses
Introduction to Scala Implicits, Pimp my library and TypeclassesIntroduction to Scala Implicits, Pimp my library and Typeclasses
Introduction to Scala Implicits, Pimp my library and Typeclasses
Jordi Pradel
 
DMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDBDMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDB
Johannes Hoppe
 
Not Everything Is An Object
Not Everything Is An ObjectNot Everything Is An Object
Not Everything Is An Object
Gary Short
 
Functional programming
Functional programmingFunctional programming
Functional programming
Bas Bossink
 
Learning programming by: Ysa & Faye
Learning programming by: Ysa & FayeLearning programming by: Ysa & Faye
Learning programming by: Ysa & Faye
TuanDanaIm
 
Learning programming
Learning programmingLearning programming
Learning programming
TuanDanaIm
 
A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)
Shuntaro Yada
 
Appstate
AppstateAppstate
Appstate
Tomas Kulich
 
Oop is not Dead
Oop is not DeadOop is not Dead
Oop is not Dead
Hernan Wilkinson
 
Functional programming scala_mod
Functional programming scala_modFunctional programming scala_mod
Functional programming scala_mod
Kishore
 
Swift, a quick overview
Swift, a quick overviewSwift, a quick overview
Swift, a quick overview
Julian Król
 
2012-02-15 jfokus2012 - regex applied
2012-02-15 jfokus2012 - regex applied2012-02-15 jfokus2012 - regex applied
2012-02-15 jfokus2012 - regex applied
Staffan Nöteberg
 
ANTLR4 in depth
ANTLR4 in depthANTLR4 in depth
ANTLR4 in depth
Владимир Кожаев
 
1 compiler outline
1 compiler outline1 compiler outline
1 compiler outline
ASHOK KUMAR REDDY
 
Object Oriented Programming : Part 2
Object Oriented Programming : Part 2Object Oriented Programming : Part 2
Object Oriented Programming : Part 2
Madhavan Malolan
 
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQLPL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
PL/pgSQL - An Introduction on Using Imperative Programming in PostgreSQL
Reactive.IO
 
Stairway to scala flyer
Stairway to scala flyerStairway to scala flyer
Stairway to scala flyer
dickwall
 
Introduction to Functional Programming and Clojure
Introduction to Functional Programming and ClojureIntroduction to Functional Programming and Clojure
Introduction to Functional Programming and Clojure
Soumendra Daas
 
Sprint Boot & Kotlin - Meetup.pdf
Sprint Boot & Kotlin - Meetup.pdfSprint Boot & Kotlin - Meetup.pdf
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
Introduction to Scala Implicits, Pimp my library and Typeclasses
Introduction to Scala Implicits, Pimp my library and TypeclassesIntroduction to Scala Implicits, Pimp my library and Typeclasses
Introduction to Scala Implicits, Pimp my library and Typeclasses
Jordi Pradel
 
DMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDBDMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDB
Johannes Hoppe
 
Not Everything Is An Object
Not Everything Is An ObjectNot Everything Is An Object
Not Everything Is An Object
Gary Short
 
Functional programming
Functional programmingFunctional programming
Functional programming
Bas Bossink
 
Learning programming by: Ysa & Faye
Learning programming by: Ysa & FayeLearning programming by: Ysa & Faye
Learning programming by: Ysa & Faye
TuanDanaIm
 
Learning programming
Learning programmingLearning programming
Learning programming
TuanDanaIm
 
A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)
Shuntaro Yada
 
Functional programming scala_mod
Functional programming scala_modFunctional programming scala_mod
Functional programming scala_mod
Kishore
 
Swift, a quick overview
Swift, a quick overviewSwift, a quick overview
Swift, a quick overview
Julian Król
 
2012-02-15 jfokus2012 - regex applied
2012-02-15 jfokus2012 - regex applied2012-02-15 jfokus2012 - regex applied
2012-02-15 jfokus2012 - regex applied
Staffan Nöteberg
 
Object Oriented Programming : Part 2
Object Oriented Programming : Part 2Object Oriented Programming : Part 2
Object Oriented Programming : Part 2
Madhavan Malolan
 

Similar to Introduction to functional programming, with Elixir (20)

Functional Programming With Elixir
Functional Programming With ElixirFunctional Programming With Elixir
Functional Programming With Elixir
Framgia Vietnam
 
Elixir for aspiring Erlang developers
Elixir for aspiring Erlang developersElixir for aspiring Erlang developers
Elixir for aspiring Erlang developers
Torben Dohrn
 
Elixir
ElixirElixir
Elixir
Fuat Buğra AYDIN
 
Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and Web
Publitory
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
Diacode
 
Intro to elixir and phoenix
Intro to elixir and phoenixIntro to elixir and phoenix
Intro to elixir and phoenix
Jared Smith
 
Elixir and elm
Elixir and elmElixir and elm
Elixir and elm
Mix & Go
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
Barry Jones
 
Elixir talk
Elixir talkElixir talk
Elixir talk
Cory Gwin
 
Introduction to Phoenix Framework (Elixir) 2016-01-07
Introduction to Phoenix Framework (Elixir) 2016-01-07Introduction to Phoenix Framework (Elixir) 2016-01-07
Introduction to Phoenix Framework (Elixir) 2016-01-07
Svein Fidjestøl
 
What is the deal with Elixir?
What is the deal with Elixir?What is the deal with Elixir?
What is the deal with Elixir?
George Coffey
 
Learning Elixir as a Rubyist
Learning Elixir as a RubyistLearning Elixir as a Rubyist
Learning Elixir as a Rubyist
Alex Kira
 
Elixir and OTP Apps introduction
Elixir and OTP Apps introductionElixir and OTP Apps introduction
Elixir and OTP Apps introduction
Gonzalo Gabriel Jiménez Fuentes
 
Elixir and Phoenix for Rubyists
Elixir and Phoenix for RubyistsElixir and Phoenix for Rubyists
Elixir and Phoenix for Rubyists
Brooklyn Zelenka
 
Elixir introduction
Elixir introductionElixir introduction
Elixir introduction
Al Sayed Gamal
 
Intro to Elixir talk
Intro to Elixir talkIntro to Elixir talk
Intro to Elixir talk
Carlos I. Peña
 
Elixir
ElixirElixir
Elixir
Robert Brown
 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
Patrick Huesler
 
Elixir
ElixirElixir
Elixir
Marek Kirejczyk
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
Keith Mattix II
 
Functional Programming With Elixir
Functional Programming With ElixirFunctional Programming With Elixir
Functional Programming With Elixir
Framgia Vietnam
 
Elixir for aspiring Erlang developers
Elixir for aspiring Erlang developersElixir for aspiring Erlang developers
Elixir for aspiring Erlang developers
Torben Dohrn
 
Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and Web
Publitory
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
Diacode
 
Intro to elixir and phoenix
Intro to elixir and phoenixIntro to elixir and phoenix
Intro to elixir and phoenix
Jared Smith
 
Elixir and elm
Elixir and elmElixir and elm
Elixir and elm
Mix & Go
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
Barry Jones
 
Introduction to Phoenix Framework (Elixir) 2016-01-07
Introduction to Phoenix Framework (Elixir) 2016-01-07Introduction to Phoenix Framework (Elixir) 2016-01-07
Introduction to Phoenix Framework (Elixir) 2016-01-07
Svein Fidjestøl
 
What is the deal with Elixir?
What is the deal with Elixir?What is the deal with Elixir?
What is the deal with Elixir?
George Coffey
 
Learning Elixir as a Rubyist
Learning Elixir as a RubyistLearning Elixir as a Rubyist
Learning Elixir as a Rubyist
Alex Kira
 
Elixir and Phoenix for Rubyists
Elixir and Phoenix for RubyistsElixir and Phoenix for Rubyists
Elixir and Phoenix for Rubyists
Brooklyn Zelenka
 
Ad

Recently uploaded (20)

Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Secure Access with Azure Active Directory
Secure Access with Azure Active DirectorySecure Access with Azure Active Directory
Secure Access with Azure Active Directory
VICTOR MAESTRE RAMIREZ
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdfArtificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Oracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization ProgramOracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization Program
VICTOR MAESTRE RAMIREZ
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
How to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptxHow to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FMEEnabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
Edge AI and Vision Alliance
 
Cisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdfCisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdf
superdpz
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent IntegrationPyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Secure Access with Azure Active Directory
Secure Access with Azure Active DirectorySecure Access with Azure Active Directory
Secure Access with Azure Active Directory
VICTOR MAESTRE RAMIREZ
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdfArtificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Oracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization ProgramOracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization Program
VICTOR MAESTRE RAMIREZ
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
How to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptxHow to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FMEEnabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
“Solving Tomorrow’s AI Problems Today with Cadence’s Newest Processor,” a Pre...
Edge AI and Vision Alliance
 
Cisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdfCisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdf
superdpz
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent IntegrationPyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Ad

Introduction to functional programming, with Elixir

  • 2. Unlearn you some OOP for great good
  • 3. ● OOP is not the only good way to design software ● Assignment & Control flow are not essential to programming ● Locks & Semaphores are not essential to concurrency
  • 4. Learn you some Functional Programming for good
  • 5. Functional Programming ● Another programming paradigm o Functions as first class citizens o Higher order functions o Immutable data o Pure functions
  • 6. Pure Functions ● Stateless ● Produces the same output always for the same input ● No side effects
  • 7. Functional Programming Languages ● Haskell ● Erlang/Elixir ● Common Lisp and more ● Scala ● JavaScript ● more
  • 8. The functional programming Boom ● Physical constraints ● Need for: o Simple concurrency and parallelism o Easier vertical and horizontal scaling o Optimal utilization of resources
  • 9. Emerging Languages ● Go ● Scala ● Erlang ● Elixir ● Rust ● Haskell ● Nim and more
  • 10. Elixir? ● Built on top of the Erlang VM ● Compiles down to BEAM bytecode
  • 11. Wth is Erlang? ● Designed for scalability and real-time systems ● Functional ● Simplifies concurrent programming ● Fault-tolerant (‘let it crash’ philosophy) ● Bytecode runs on the Erlang VM
  • 12. Erlang is used by ● Facebook (Chat) ● Amazon ● Whatsapp ● Yahoo! ● Heroku ● Github ● and more
  • 13. Story of Whatsapp ● 2 Million connections on a single node ● 450 Million users handled by 32 engineers ● Acquired by Facebook for $19 Billion ● Backend powered by Erlang
  • 14. Elixir ● Dynamic ● Functional ● Built on top of the Erlang VM o implies Concurrent, Distributed and Fault-tolerant ● 1.0.0 was released in Sep 2014 ● Created by Jose Valim
  • 15. Why use Elixir? ● All the benefits of Erlang ● Easily reuse Erlang libraries o No additional performance costs ● Better tooling, which allows for greater productivity ● Better syntax ● Simplified metaprogramming
  • 16. Concurrency! Concurrency in erlang/elixir vs other languages is like branching in git vs subversion. ● Its simple and cheap
  • 17. Everything is an expression
  • 19. Datatypes ● Atoms ● Integers ● Floating point numbers ● Binaries ● Tuples ● Lists ● Strings and Character lists ● Maps, Hashdicts and Keyword Lists
  • 20. Modules ● Means of organizing code ● Contains all named functions
  • 21. Functions ● Elixir functions are defined by: o Name o Arity ● Types of functions o Anonymous & Inline Anonymous  inherits scope o Named  does not inherit scope
  • 22. Pattern Matching ● Assert, not assign ● Equals sign isn’t really assignment, its more like an assertion ● Behaviour of tuples, lists and variables in pattern matching is important to understand ● Ignore values using _ ● Force use variables using ^
  • 23. Pipeline operator |> ● Formulating transformation of data ● Similar to Linux pipes ● Making functions/methods composable ● Data |> Method 1 |> Method 2 |> Method 3
  • 24. Live Examples ● Sum, Multiply ● Factorial, Fibonacci, GCD ● List operations ● File operations ● Maps, Typed maps
  • 25. Tooling ● Mix, a wonderful build system ● First class documentation o Inline documentation o Doctests ● Dependency Management using Mix ● Testing library included
  • 26. Topics not covered ● Mix, `maven` for Elixir o compatible with hex, the `maven` for Erlang ● OTP ● Metaprogramming ● Protocols ● Structs ● Streams, Enumerables, Collectables
  • 27. Elixir frameworks ● Phoenix: Web framework ● Ecto: LINQ for Elixir More: Awesome Elixir List
  • 28. Questions? Interested? You can read more here: https://github.com/hashd/LearnStack/blob/master/notes/elixir.md