Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Functional Programming With Scala

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

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

You might also like