Learning Functional Programming

Hanneli Tavante
3 min readAug 12, 2017

The content that I used to learn (something about) Functional Programming.

Quick context: I had heard something about functional programming, I had seen something about OCaml and Scala during my time at the University, but I hadn’t gone deep into the subject. I even presented my final Compiler project using Scala, butI knew I had lots of things to learn.

The year was 2011, and I was working for a company where we had technical presentations during the lunch time. Among Web development, Design Patterns and other subjects, one particular presentation called my attention: a Haskell introduction (thanks, @srsaude). At the beginning of 2012, I read the popular book “Learn You a Haskell for a Great Good” [a.k.a LYAH], and this book motivated my interest for the topic. To clarify — I did not “fall in love” with Haskell, but I pretty much enjoyed the programming style. In the same year, I read “Scala for the Impatient” and had my first contact with real world projects (I jumped a little bit into Scala thanks to my friend @missingfaktor).

In 2013, I had some contact with Swift, as soon as Apple adopted the language (I was working for the mobile industry). Back then, there weren’t many books about the language, and the community was still discussing the best practices. I noticed I could use many ideas from Scala in my Swift code. It was at some point in late 2013 that I followed the content of Cis194 (thanks, Gin) [I admit that I stopped at Week 9] and that gave me a better sense of Functional Programming.

In 2015, when I started studying the main topic of Type Theory, I had the chance to read the famous book “How to Design Programs” and with some help from “Lambda Calculus with Types”, I got a real appreciation for FP. Later on, I read the free ebook “Type Theory & Functional Programming”, from Thompson.

2017 is being full of books, so I reserved some time to (re)read SICP and jump into Scala once again.

What’s next? Maybe the NICTA course. Alternatively, “the red book” of Scala would be a good idea (shame on me for not reading this one earlier). But maybe before doing all these, I might get a copy of the haskellbook (thanks, @bitemyapp) — the feedback for this one is excellent.

Books and online content are not the only sources of knowledge. Going to conferences and talking to people also helped. Organising the Functional Programming track at The Developer’s Conference was another interesting mechanism to get updated content — and talk to brilliant people in the field.

TL; DR
Books and courses:
- LYAH, for a general intro
- Scala for the Impatient
- Cis194
- SICP
- How to Design Programs
- Lambda Calculus with Types
- Type Theory & Functional Programming

Upcoming:
- haskellbook
- NICTA
- Functional Programming in Scala (thanks, @janogonzalez)

This content worked/is working for me. I still have a lot of subjects to learn! I know that people have different opinions about books/courses, so feel free to leave a comment with your own experience. If you have any other suggestion, please let me know!

More ideas/ extra learning resources:

Thanks for reading!

--

--

Hanneli Tavante

Software developer, Engineer, Programming Languages, electronics, Science, Maths, bookahoolic, tech, Pokémon, Lego, animals, coffee drinker.