Functional Swift Conference 2017 — Brooklyn
On April 15th Kickstarter hosted the fourth ever Functional Swift Conference, which is the third time we’ve hosted it at our office! It’s an all-day event with 10 speakers (4 were Kickstarter engineers!), 90 attendees and lots of discussions around what can we learn from functional programming to write better Swift code.
Growing Trees with Recursive Enums in Swift — Konrad Feiler
Konrad describes the power of value types and recursive data structures as a means to very simply describe complicated objects. He applies this to KD-trees and shows off their amazing performance properties.
Test Doubles Are A Scam — Matt Diephouse
Matt makes the case that test doubles aren’t helping you as much as you think they are. He shows how you can instead describe side-effects instead of performing them in order to gain more testability and understandability.
There And Back Again…: A (dys-)Functional Programmer’s Tale — Lisa Luo
Lisa, an Android and iOS engineer at Kickstarter, describes her journey moving between Android and iOS, and how functional programming provided a base language for how she interacted with two very different platforms.
Objecting to Objects — Christella Dolmo
Christella, also an iOS engineer at Kickstarter, describes what it has been like to learn functional programming after having just learned object-oriented programming.
Writing Domain Specific Languages — Rahul Malik
Rahul discusses domain specific languages and uses GraphQL as an example, which a little bit of live coding at the end!
Beyond Types in Swift — Brandon Kase
Brandon gives a talk about algebraic laws that often lurk behind our abstractions, and why they are important.
Monoids, Predicates and Sorting Functions — Brandon Williams
Brandon, another engineer at Kickstarter, continued other Brandon’s theme on monoids by showing some interesting constructions of monoids and then applying it to the case of predicates and sorting functions.
Applicatives and Swift — Stephen Celis
Stephen, yet another engineer at Kickstarter, describes applicative functors, which are a generalization of monads, and how they unlock functionality that cannot be seen from the monadic world.
Applicative Parsing with Documentation — Chris Eidhof
Chris continues the theme on applicatives by live coding a simple API that generates its own documentation for free!
A Type System From Scratch — Robert Widmann
Finally, Robert gives a whirlwind of a tour through type systems and why type inference is so hard. He also describes how the Swift compiler team uses graph theory to attack problems of type inference in a practical way.