Partial Application vs. Currying

Is the entire world of aspiring functional programmers generally confused about partial function application and currying, or is it just me? I like to feel well-informed when I think to myself that these two are not the same thing, but I still couldn't tell you what the difference is. To…

Magic Not in the Monad

I am recently coming to grips with a foundational misconception I have been entertaining about monads, possibly since I first heard the term. I am not a category theorist, and I first encountered monads in the context of functional programming. For me the monad has always been shrouded in mystery…

Rebuilding Haskell in C#: Functors

Look out; I've been digging into Haskell again. I enjoy learning about Haskell, but more than that, I enjoy learning to think in a functional way. Haskell is a particularly good language to facilitate that, as it is arguably the most functional of functional languages. It boasts "pure" functionality, and…

Polyglot Survival Guide: Erlang, Haskell, F#, and Elixir

Lately I have been bouncing back and forth between Erlang and Haskell, two profoundly significant functional languages that I find both very different and very similar. They are very different in their philosophies and thought patterns, particularly around data types, but both being non-LISPy functional languages, they have enough similarities…

Elixir: Language Love Child?

Different programming languages, like different people, have their strengths and weaknesses. Some are simple; some are complex. Some are friendly to the programmer; some are friendly to the processor. Some cater to brilliant minds; some cater to other minds. I have spent a significant portion of my development career writing…

Moops! Haskell, IO, and the Bubble Boy

I recently set out to get Haskell connected to a PostgreSQL database. The task ended up having almost nothing to do with PostgreSQL and everything to do with Haskell's militant stance on functional purity. I chose to use HDBC since it appeared to be the most vanilla approach. Before I…