Short-medium, [hopefully] practical, and clear articles on applying algebraic abstractions and thinking in the context of (mostly functional) programming.

The primary goal of Functional Algebra is to show fellow practitioners with mostly imperative programming backgrounds why these techniques are worthwhile and how to start employing them using example code in Haskell, Scala, and [soon] Clojure.

Note: I am merely dangerous in Clojure, so this will be a learning process for me as well. Thanks for your patience!

Material

  •   Algebraic Data Types and Structures
    Discussing the differences between an algebraic data type and and algebraic [data] structure.
  • Axiomatic Software
     
    Rethink building software in terms of building axiomatic systems (i.e. algebras) and how this shift in mindset might, concievably, simplify the layers in your software, improve testability, and thus improve quality.
  • Fun with Functors
     
    Scala & Haskell examples offering intuitions to what functors are and why they might be useful.
  • Practical Error Handling
     
    Scala & Haskell examples providing informal introduction to how we might handle errors in functional programming and how this differs to stack unwinding exception handling in most mainstream imperative languages.
  • Effective IO
     
    Scala examples that offer insight into why using the IO monad in a language that doesn't require it might be useful.
  • Building Useful Monoids
     
    Scala & Haskell examples that extend from the SCNA talk I gave in Chicago (Nov 2012) on monoids to discuss how to build real world, useful monoids and compare to equivalent imperative code. Slides for the original talk can be found here.
  • Introducting Applicatives
     
    Scala & Haskell examples
  • Introducing Lenses
     
    Scala & Haskell examples