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

Functional Programming in Swift with Bow

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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.

Avatar for Tomás Ruiz-López

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      