Underscore

75
“Hey Underscore, You’re doing it wrong”

Transcript of Underscore

Page 1: Underscore

“Hey Underscore, You’re doing it

wrong”

Page 2: Underscore

I <3 _

Page 3: Underscore

So what’s wrong then?

Page 4: Underscore
Page 5: Underscore

Agenda

•Currying

•Composition

•Functors

•Random stuff

Page 6: Underscore

CurryingCurrying

Page 7: Underscore

Curried Function

“A function that will return a new function until it receives all it’s arguments”

Page 8: Underscore
Page 9: Underscore
Page 10: Underscore
Page 11: Underscore

...weird

Page 12: Underscore

Wu.js to the rescue!

(well, one function at least)

Page 13: Underscore
Page 14: Underscore
Page 15: Underscore

not weird

Page 16: Underscore
Page 17: Underscore
Page 18: Underscore
Page 19: Underscore
Page 20: Underscore
Page 21: Underscore
Page 22: Underscore
Page 23: Underscore
Page 24: Underscore

ExampleExample

Page 25: Underscore

ExampleFunction

alUnderscor

e

0 0

Page 26: Underscore

ExampleFunction

alUnderscor

e

1 0

Page 27: Underscore

ExampleFunction

alUnderscor

e

2 0

Page 28: Underscore

ExampleFunction

alUnderscor

e

3 0

Page 29: Underscore

underscore’s api prevents you from currying

Page 30: Underscore
Page 31: Underscore

Currying•Make generic functions - data is

gone

•Build new functions by applying args

•Much more concise definitions

•Make types “line up” for composition

Page 32: Underscore

CompositionComposition

Page 33: Underscore
Page 34: Underscore
Page 35: Underscore
Page 36: Underscore
Page 37: Underscore
Page 38: Underscore
Page 39: Underscore
Page 40: Underscore
Page 41: Underscore

Category Theory

“The mathematical theory of transforming values and crap”

*inaccurate definition

Page 42: Underscore
Page 43: Underscore
Page 44: Underscore
Page 45: Underscore

ExampleExample

Page 46: Underscore

ExampleFunction

alUnderscor

e

3 0

Page 47: Underscore

ExampleFunction

alUnderscor

e

4 0

Page 48: Underscore

ExampleFunction

alUnderscor

e

5 0

Page 49: Underscore
Page 50: Underscore

underscore promotes chain as the function

of choice.

Page 51: Underscore
Page 52: Underscore

Composition•Build new functions from other

functions

•Helps build generic programs w/o args

•Extremely high level coding

•Mathematically backed

Page 53: Underscore

FunctorsFunctors

Page 54: Underscore
Page 55: Underscore
Page 56: Underscore
Page 57: Underscore
Page 58: Underscore
Page 59: Underscore
Page 60: Underscore
Page 61: Underscore
Page 62: Underscore
Page 63: Underscore
Page 64: Underscore
Page 65: Underscore
Page 66: Underscore
Page 67: Underscore
Page 68: Underscore

ExampleExample

Page 69: Underscore

ExampleFunction

alUnderscor

e

5 0

Page 70: Underscore

ExampleFunction

alUnderscor

e

6 0

Page 71: Underscore

ExampleFunction

alUnderscor

e

7 0

Page 72: Underscore

underscore explicitly prevents

extending map

Page 73: Underscore
Page 74: Underscore

Functors/Typeclasses

•Change behavior without altering function open/closed principle

•Not just map - reduce, compose, etc

•Intuition and “non proprietary” api

•Free formulas

•Dynamic type safety?

Page 75: Underscore

In conclusionIn conclusion