Pro Yearly is on sale from $80 to $50! »

The Future of Functional Programming on iOS

0ebf471a3ae8df42a84f93a7efbbdbd0?s=47 Ash Furrow
September 18, 2014

The Future of Functional Programming on iOS

This is a presentation I gave at NSSpain 2014: http://nsspain.com/2014/

Code used in the presentation: https://github.com/AshFurrow/NSSpain2014

The "Functional Programming in Swift" book is available at http://www.objc.io/books/

The new Artsy Swift app written in ReactiveCocoa is available at http://github.com/artsy/eidolon

The Carl Sagan wallpaper was downloaded from http://picc.it/c/wallpapers/pictures/album/wallpaper_28/id/50302/@carl_sagan_wallpaper_i_made

0ebf471a3ae8df42a84f93a7efbbdbd0?s=128

Ash Furrow

September 18, 2014
Tweet

Transcript

  1. the$f&t&re$of Ash Furrow functional programming on$iOS

  2. Objective-C

  3. Objective- C

  4. Closures Functional patterns Concise syntax Native Collections Operator overloading Namespaces

    Tuples Clear mutability syntax Interactive playground Multiple return types Generics Protocols and extensions on structs Pattern matching Fast iteration Optional types Object orientation Type inference Read-Eval-Print-Loop (REPL) Compile to native code
  5. Closures Functional patterns Concise syntax Native Collections Operator overloading Namespaces

    Tuples Clear mutability syntax Interactive playground Multiple return types Generics Protocols and extensions on structs Pattern matching Fast iteration Optional types Object orientation Type inference Read-Eval-Print-Loop (REPL) Compile to native code
  6. Closures Functional patterns Concise syntax Native Collections Operator overloading Namespaces

    Tuples Clear mutability syntax Interactive playground Multiple return types Generics Protocols and extensions on structs Pattern matching Fast iteration Optional types Object orientation Type inference Read-Eval-Print-Loop (REPL) Compile to native code
  7. Objective-C

  8. Objective- C

  9. Objective-C

  10. None
  11. 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
  12. 1. Imperative$prog5amming$is$old$and$busted$ 2.Functional$prog5amming$is$the$new$ho?@ess$ 3.Ge?ing$starCed$with$f&nctional$prog5amming$in$Swiſt$is$superEeasy

  13. old and busted

  14. 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
  15. new hottness

  16. functional programming • It’s been around forever • But only

    in universities (ew)
  17. what is functional programming? • Treat computation as the result

    of functions • Avoid mutable state and data
  18. f&nctional$prog5amming$tells$the$computer instead$of what to do how to do it

  19. getting started is super-fácil* *ed:$Spanish

  20. code let’s

  21. github.com/ashfurrow/nsspain2014 [~]

  22. resources • Books • GitHub • ReactiveCocoa • swiftz •

    Stack Overflow • Tweet me
  23. objc.io/books

  24. github.com/artsy/eidolon

  25. 1. Imperative$prog5amming$is$old$and$busted$ 2.Functional$prog5amming$is$the$new$ho?@ess$ 3.Ge?ing$starCed$with$f&nctional$prog5amming$in$Swiſt$is$superEeasy

  26. so where now? • Swift promised functional patterns • Failed

    to deliver • Community is picking up the slack
  27. make better mistakes tomorrow

  28. gracias @ashfurrow