liftin every day

42
Liftin’ Every Day

Upload: brian-lonsdorf

Post on 23-Jun-2015

438 views

Category:

Technology


2 download

DESCRIPTION

Every day use of applicative functors in javascript

TRANSCRIPT

Page 1: Liftin every day

Liftin’ Every Day

Page 2: Liftin every day

Applicative Functors?

Page 3: Liftin every day

pure :: a -> f a

ap :: f (a -> b) -> f a -> f b

Page 4: Liftin every day
Page 5: Liftin every day

Closed Under Composition

Page 6: Liftin every day

Closed Under Composition

Page 7: Liftin every day

Closed Under Composition

Page 8: Liftin every day

Closed Under Composition

Page 9: Liftin every day

liftA :: (a -> b) -> f a -> f bliftA2 :: (a -> b -> c) -> f a -> f

b -> f c

Page 10: Liftin every day

liftA :: (a -> b) -> f a -> f bliftA2 :: (a -> b -> c) -> f a -> f

b -> f c

Just fmap

Page 11: Liftin every day

liftA :: (a -> b) -> f a -> f bliftA2 :: (a -> b -> c) -> f a -> f

b -> f c

Just fmap

We can get arityautomatically

Page 12: Liftin every day

ap(pure(f), x, y) == liftA(f, x, y)

Page 13: Liftin every day

Ultimate Combinator

Page 14: Liftin every day

f(g(x), h(x),..n(x))

Page 15: Liftin every day
Page 16: Liftin every day

f(g(x), h(x))

Page 17: Liftin every day
Page 18: Liftin every day

f(g(x), h(x))

Page 19: Liftin every day
Page 20: Liftin every day
Page 21: Liftin every day
Page 22: Liftin every day

List Comprehensions

Page 23: Liftin every day
Page 24: Liftin every day
Page 25: Liftin every day
Page 26: Liftin every day
Page 27: Liftin every day

A Quick Word about Comma Overloading

Page 28: Liftin every day
Page 29: Liftin every day

ZipLists

Page 30: Liftin every day

ap([f, g], [x,y])[f(x), f(y), g(x), g(y)]

-or-

ap([f, g], [x,y])[f(x), g(y)]

Page 31: Liftin every day

ap([f, g], [x,y])[f(x), f(y), g(x), g(y)]

-or-

ap([f, g], [x,y])[f(x), g(y)]

ZipList

Page 32: Liftin every day
Page 33: Liftin every day
Page 34: Liftin every day
Page 35: Liftin every day

Eventual Results

Page 36: Liftin every day
Page 37: Liftin every day
Page 38: Liftin every day
Page 39: Liftin every day
Page 40: Liftin every day

Combinators

Comprehensions

Semaphores

Parallel Computations

Composition

Page 41: Liftin every day

Lots more I didn’t get to...

Page 42: Liftin every day

•http://looprecur.com

•@drboolean

•drboolean.tumblr.com

•https://github.com/loop-recur/typeclasses

THANKS!