I try to define software architecture, both in the large and in the small.
Thoughts on Functional Programming Podcast
An off-the-cuff stream of Functional Programming ideas, skills, patterns, and news from Functional Programming expert Eric Normand.
We read one of the great articles by Alan Kay, inventor of Smalltalk.
In this first episode of season 3, we analyze a great paper called Lisp: A language for stratified design.
I’m taking a break to retool for Season 3, which will start in the new year. I also give an update on Grokking Simplicity. I am working on Chapter 7.
Bruno Ribeiro asked a great question about the practical uses of monads. Are they useful? Why are they used so much in Haskell? In this episode, we briefly go over the history of monads in Haskell and how they allow you to do imperative programming in a pure functional language.
In a recent episode, I said structural similarity comes from the algebraic properties of the relationships between things. But that’s not the case. Rotislav mentioned in the comments that it actually comes from the structure in the relationships. I explore that idea in this episode.
Of course immutable data structures are great, but are they necessary for FP? Short answer is: no. There’s a lot of functional ideas and perspectives that can be applied even if you don’t have them. And you can always make things immutable through discipline. In this episode, we explore those two ideas.
When we look at the definitions of algebraic properties, we often see that we are defining how things compose. This is one of the main advantages of using algebraic properties to constrain our operations. If we define how they should compose before we implement them (as a unit test, for instance) we can guarantee that things will compose.
Product and sum types allow us to exactly model any number of states with a lot of flexibility.