https://github.
com/vinhdangphuc
/hands-on
Follow the instruction on hands-on/scala.md
Functional Programming with Scala 1
Functional Programming
with Scala
VINH DANG
Data Engineer
FPT Telecom - 2019.11.02
Functional Programming with Scala 2
Functional Programming
The process of building software by composing pure functions,
avoiding shared state, mutable data, and side-effects
declarative rather than imperative
Functional Programming with Scala 3
Function
● A function is a collection of statements that perform a
certain task
● Function is a object which can be stored in a variable
● Method always belongs to a class which has a name,
signature bytecode
Functional Programming with Scala 4
Pure functions
● Given the same inputs, always returns the same output
● Has no side-effects
Functional Programming with Scala 5
Side Effects
● Any application state change that is observable outside the
called function other than its return value
○ Modifying any external variable or object property
○ Writing to the screen/console
○ Triggering any external process
Functional Programming with Scala 6
Shared state
● Shared state is any variable, object, or memory space that
exists in a shared scope
● Or as the property of an object being passed between
scopes
● A shared scope can include global scope or closure scopes
Functional Programming with Scala 7
Immutability
● An immutable object is an object that can’t be modified
after it’s created
● In concurrent situation: access a mutable object required
locking -> reduces throughput, more difficult to maintain
Functional Programming with Scala 8
Declarative vs Imperative
● Imperative programs spend lines of code describing the
specific steps used to achieve the desired results — the
flow control: How to do things
● Declarative programs abstract the flow control process,
and instead spend lines of code describing the data flow:
What to do. The how gets abstracted away
Functional Programming with Scala 9
Why scala?
● Multi-Paradigm Language: OOP, FP
● Interoperability with Java: be able to use all Java libraries
● Expressiveness: you can write beautiful and clean code
● Statically Typed: compile time error
Functional Programming with Scala 10
Higher Order Functions
● Take other functions as parameters
● Or result is a function
● Tends to reuse a common set of functional utilities to
process data
Functional Programming with Scala 11
Higher Order Functions
● Map applies a function on all elements of a collection
Functional Programming with Scala 12
Higher Order Functions
● Filter creates a list of elements for which a function returns
true
Functional Programming with Scala 13
Higher Order Functions
● Return a function
Functional Programming with Scala 14
Pattern Matching
● More powerful version of switch statement in Java
Functional Programming with Scala 15
Pattern Matching
● Matching on types
Functional Programming with Scala 16
Pattern Matching
● More powerful case
Functional Programming with Scala 17
Pattern Matching
● The most powerful case: matching on case classes
Functional Programming with Scala 18
Implicit Conversion
● Set of methods that are apply when an object of wrong type
is used
● Compiler to automatically convert of one type to another
Functional Programming with Scala 19
Implicit Conversion
● Implicit conversions are applied in two conditions
○ First, if an expression of type A and S does not match to
the expected expression type B
○ Second, in a selection e.m of expression e of type A, if the
selector m does not represent a member of A
Functional Programming with Scala 20
Q&A
Functional Programming with Scala 21
Thankyou!
Functional Programming with Scala 22
https://medium.com/@maximebeauchemin/functional-data-engineering-a-modern-paradigm-for-batch-data-processing-2327ec32c
42a
Functional Programming with Scala 23