Slide 1

Slide 1 text

Typeclasses, Monads, etc. Functional programming in Scala can be simple!

Slide 2

Slide 2 text

“The plan” • Implicit parameters - readability

Slide 3

Slide 3 text

“The plan” • Implicit parameters - readability • Typeclasses - code reuse

Slide 4

Slide 4 text

“The plan” • Implicit parameters - readability • Typeclasses - code reuse • Monads - composition

Slide 5

Slide 5 text

Implicit Parameters Demo

Slide 6

Slide 6 text

• Keyspace =~ db schema • Column family =~ db table

Slide 7

Slide 7 text

Operations on rows

Slide 8

Slide 8 text

Operations on objects

Slide 9

Slide 9 text

Typeclasses Demo

Slide 10

Slide 10 text

What is type class? Type class == Group of types

Slide 11

Slide 11 text

What is type class? Type class == Group of types

Slide 12

Slide 12 text

What is type class? Type class == Group of types T belongs to CassandraObject typeclass if there is class X such that X extends CassandraObject[T]

Slide 13

Slide 13 text

Type class instance

Slide 14

Slide 14 text

Serialization

Slide 15

Slide 15 text

Typecalass

Slide 16

Slide 16 text

Typeclass Instance

Slide 17

Slide 17 text

Multiple Instances

Slide 18

Slide 18 text

Numeric

Slide 19

Slide 19 text

Matrix multiplication

Slide 20

Slide 20 text

Matrix multiplication

Slide 21

Slide 21 text

Typeclasses summary

Slide 22

Slide 22 text

Typeclasses summary

Slide 23

Slide 23 text

Typeclasses summary

Slide 24

Slide 24 text

Typeclasses summary Numeric[T] Serializable[T]

Slide 25

Slide 25 text

JVM Cassandra Actor Router Actor Cassandra Actor Connection Cassandra Get(...) Cassandra Actor Connection

Slide 26

Slide 26 text

JVM Cassandra Actor Router Actor Cassandra Actor Connection Cassandra Get(...) Cassandra Actor Connection

Slide 27

Slide 27 text

JVM Cassandra Actor Router Actor Cassandra Actor Connection Cassandra Get(...)

Slide 28

Slide 28 text

JVM Cassandra Actor Router Actor Cassandra Actor Connection Cassandra Get(...) Cassandra Actor Connection

Slide 29

Slide 29 text

Async Action

Slide 30

Slide 30 text

Save as Async

Slide 31

Slide 31 text

Composition

Slide 32

Slide 32 text

Composition Demo

Slide 33

Slide 33 text

Monad Monad laws:

Slide 34

Slide 34 text

Functor

Slide 35

Slide 35 text

Functor Monad is a Functor:

Slide 36

Slide 36 text

For comprehension

Slide 37

Slide 37 text

For comprehension ==

Slide 38

Slide 38 text

For comprehension ==

Slide 39

Slide 39 text

Option is a Monad

Slide 40

Slide 40 text

Future is a Monad

Slide 41

Slide 41 text

Collections are Monads

Slide 42

Slide 42 text

Option -> Iterable

Slide 43

Slide 43 text

Questions? Peter Gabryanczyk @piotrga [email protected] http://blog.scala4java.com