Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Functional Programming in Swift with Bow

Functional Programming in Swift with Bow

Swift offers many features to enable Functional Programming, but still lacks some important concepts. With Bow, a library for FP written in Swift, these shortcomings are addressed.

Tomás Ruiz-López

October 17, 2019
Tweet

More Decks by Tomás Ruiz-López

Other Decks in Programming

Transcript

  1. Functional Programming in Swift with Bow Tomás Ruiz-López Technical Lead

    at 47 Degrees @tomasruizlopez @tomasruizlopez | #LambdaWorld | @bow_swift      
  2. Swift & FP Structs, Tuples and Enums Products and Sum

    types, Pattern matching @tomasruizlopez | #LambdaWorld | @bow_swift      
  3. Swift & FP Optional and Result built in @tomasruizlopez |

    #LambdaWorld | @bow_swift      
  4. Swift & FP SwiftUI and Combine Declarative and Reactive Programming

    @tomasruizlopez | #LambdaWorld | @bow_swift      
  5. Higher Kinded Types Lightweight higher-kinded polymorphism Jeremy Yallop and Leo

    White @tomasruizlopez | #LambdaWorld | @bow_swift      
  6. Type classes Semigroup, Monoid Invariant, Functor, Applicative, Selective, Monad ApplicativeError,

    MonadError Foldable, Traverse MonadReader, MonadWriter, MonadState @tomasruizlopez | #LambdaWorld | @bow_swift      
  7. Data types Core types: Id, Const, Option, Either, Validated, Ior,

    Eval Arrow: Function0, Function1, Kleisli, Cokleisli Collections: ArrayK, NonEmptyArray, SetK, DictionaryK Transformers: ReaderT, StateT, WriterT, OptionT, EitherT @tomasruizlopez | #LambdaWorld | @bow_swift      
  8. Effects Effects type class hierarchy Bifunctor IO<E, A> Environmental Effects

    EnvIO<D, E, A> @tomasruizlopez | #LambdaWorld | @bow_swift      
  9. Optics Iso, Getter, Setter, Lens, Optional, Prism Fold, Traversal Polymorphic

    versions Type classes: Cons, Snoc, At, Index, FilterIndex, Each @tomasruizlopez | #LambdaWorld | @bow_swift      