ash furrow, functional programming in swift
DESCRIPTION
Ash Furrow, Functional programming in swiftTRANSCRIPT
the f&t&re of
Ash Furrow, Artsy
functional programming
on iOS
Objective-C
Closures
Functional patterns
Concise syntax
Native Collections
Operator overloading
Namespaces Tuples
Clear mutability syntax
Interactive playground Multiple return types
Generics
Protocols and extensions on structsPattern matching
Fast iteration
Optional types
Object orientation
Type inference
Read-Eval-Print-Loop (REPL)
Compile to native code
Closures
Functional patterns
Concise syntax
Native Collections
Operator overloading
Namespaces Tuples
Clear mutability syntax
Interactive playground Multiple return types
Generics
Protocols and extensions on structsPattern matching
Fast iteration
Optional types
Object orientation
Type inference
Read-Eval-Print-Loop (REPL)
Compile to native code
Closures
Functional patterns
Concise syntax
Native Collections
Operator overloading
Namespaces Tuples
Clear mutability syntax
Interactive playground Multiple return types
Generics
Protocols and extensions on structsPattern matching
Fast iteration
Optional types
Object orientation
Type inference
Read-Eval-Print-Loop (REPL)
Compile to native code
Objective-C
It will not be we make apps for the WATCH 5 and the other future iOS devices. It will be a group of developers very much like us. But with more of our strengths and fewer of our weaknesses. More confident, far-seeing, and capable of using functional paradigms. For all of our failings, despite our limitations and fallibilities, we developers are capable of greatness.
—Carl Sagan
1. Imperative prog5amming is old and busted
2. Functional prog5amming is the new ho?@ess
3. Ge?ing starCed with f&nctional prog5amming in Swist is super-‐easy
old
and
busted
ANDA MASK ;AND A with Mask BNE ADD1 BRA NONE1 ADD1 INY ;increment our counter of 1's NONE1 LDAA TEMP ;reload accumulator A LSL MASK ;Shift the mask's 1 bit left BNE LOOP1 ;If we haven't finished our loop, branch LDAA #$01 ;load new mask into A STAA MASK ;store the reset mask into MASK TSX ;pull of return address and store in X PULA ;pull off A STAA TEMP ;store the value into temp TXS ;push return address back onto the stack LOOP2 LDAA TEMP ;Load A into TEMP ANDA MASK ;logical AND MASK with A BNE ADD2 ;add one if we need to BRA NONE2 ADD2 INY ;increment our counter of 1's NONE2 LDAA TEMP LSL MASK ;shift our mask left by one BNE LOOP2 ;loop back until we've exhausted positions STY TEMP ;store Y into TEMP - this is the number of 1's
newhottness
functional programming
• It’s been around forever
• But only in universities (ew)
what is functional programming?
• Treat computation as the result of functions
• Avoid mutable state and data
f&nctional prog5amming tells the computer
instead of
what to do
how to do it
getting started
is
super-easy
code
let’s
github.com/ashfurrow/minsk
resources
• Books
• Blogs
• GitHub
• ReactiveCocoa
• LlamaKit
• Stack Overflow
• Tweet me
objc.io/books
github.com/artsy/eidolon
1. Imperative prog5amming is old and busted
2. Functional prog5amming is the new ho?@ess
3. Ge?ing starCed with f&nctional prog5amming in Swist is super-‐easy
so where now?
• Swift promised functional patterns
• Failed to deliver
• Community is picking up the slack
make
better mistakes
tomorrow
thanks
@ashfurrow