Craftsman at Work

I'm Artur Karbone, coding software architect and independent IT consultant and this is my blog about craftsmanship, architecture, distributed systems, management and much more.

The way I learn functional programming

My strong opinion is that nowadays when developers say they know .NET or Java it is the same as saying that they can breath.

Since the world is getting more concurrent and distributive and I want to be on the cutting edge I started learning functional languages.

So far my languages of choice are Elixir, Erlang, Haskell, F#.

Learning them simultaneously is not so hard (well it is actullay is in the very begining when You are not acquainted with functional paradigm yet). Some of these languages (like Hasell and F#) have currying support, some of them leverage Actor model for concurrency. But they share a paradigm. It was not a big deal for me to dive into Haskell after F#, since I was aware of recursion, currying, etc. My rough analogy would be: if a developer knows object oriented paradigm, it's quite easy to switch from one OOP language to another.It is just matter of syntax and language specific idioms.

As I mentioned earlier I started my journey with F#, since .NET is innate for me, so it was the most obvious option to start with. At the moment I leverage F# on several production systems. Will create a blog post about it later on. Here is my github repo called WhyFSharp where i'm practicing some functional concepts. Btw. this repo also contains samples how to write unit tests in F#.

Then I switched to Haskell. I recommend this amazing MOC called Introduction to Functional Programming by Erik Meijer to start with.

Here is my github repo where i'm practising Haskell. This repo mostly contains some samples/pieces of code/ from different books/resources. I call this approach Muscle Memory Katas. The purpose of these katas is not to solve some concrete tasks, rather build muscle memory by typing, typing, typing and once again typing (until it cries) some language specific constucts/idioms over and over again.

At the moment i'm doing Elixir/Erlang. Recently a friend of mine Janis Miezitis presented me this awesome book Seven More Languages in Seven Weeks. Beside that i'm working on
Programming Elixir. And it goes without saying that i'm a subsciber of Elixir Sips screen casts series.

In addition to that i'm going to Elixir Conference this year.

comments powered by Disqus