{"id":7756,"date":"2018-08-13T17:35:48","date_gmt":"2018-08-13T20:35:48","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=7756"},"modified":"2018-08-17T10:15:05","modified_gmt":"2018-08-17T13:15:05","slug":"review-learn-functional-programming-with-elixir","status":"publish","type":"post","link":"http:\/\/blog.plataformatec.com.br\/2018\/08\/review-learn-functional-programming-with-elixir\/","title":{"rendered":"Review: Learn Functional Programming with Elixir"},"content":{"rendered":"

I have recently finished reading the book Learn Functional Programming with Elixir, from Ulisses Almeida, published by PragProg.<\/p>\n

\"\"<\/p>\n

I was curious about this book in \u00a0particular because I wanted to know how a book that explains functional programming for people that are starting this journey would be<\/p>\n

My path to learning functional programming was not linear and I had to go through many different resources until I finally wrapped my head around this (not so) new concept.<\/p>\n

Ulisses’s book comes to fill in this gap and it is a wonderful resource if you want to understand what functional programming is about and where to start.<\/p>\n

The book itself is divided into seven chapters:<\/p>\n

    \n
  1. Thinking Functionally<\/li>\n
  2. Working with Variables and Functions<\/li>\n
  3. Using Pattern Matching to Control the Program Flow<\/li>\n
  4. Diving into Recursion<\/li>\n
  5. Using Higher-Order Functions<\/li>\n
  6. Designing Your Elixir Applications<\/li>\n
  7. Handling Impure Functions<\/li>\n<\/ol>\n

    It is not a heavy reading and it guides the readers from the basics of functional programming, going through concepts such as recursion and immutability, until more advanced concepts like polymorphism.<\/p>\n

    All of this with lots of examples and exercises that help the reader to comprehend what is being discussed in a very clear and concise way.<\/p>\n

    Chapter six in special caught my attention because it brings some light to the subject Protocols<\/code><\/a> and Behaviours<\/code><\/a>. Even though there is a lot of material about that subject, it is pretty common for people to get confused about it, and in the book, Ulisses explains it in such a simple way through lots of examples and refactorings that I am almost sure that you won\u2019t have doubts about this topic anymore.<\/p>\n

    Target<\/h2>\n

    This is a book for people that don’t have any previous knowledge of functional programming and\/or Elixir. It will walk you through all the necessary subjects for you to understand these concepts in a way that it seems that Ulisses is talking to you face to face.
    \nBut it is important to make it clear that it doesn’t cover all Elixir topics. You will still need to read more books, after finishing this one, to understand topics such as processes, metaprogramming \u00a0among other things.<\/p>\n

    Conclusion<\/h2>\n

    It is definitely a great book for people that need guidance in the functional programming world, the book I wish I had the chance to read when I was first starting. Such a light reading that you can do it on the way to work, without getting lost in the examples, definitely worth it.<\/p>\n

    Do you want to take a look at the first chapter?<\/p>\n

    Download it for free in here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"

    I have recently finished reading the book Learn Functional Programming with Elixir, from Ulisses Almeida, published by PragProg. I was curious about this book in \u00a0particular because I wanted to know how a book that explains functional programming for people that are starting this journey would be My path to learning functional programming was not … \u00bb<\/a><\/p>\n","protected":false},"author":67,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[143],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7756"}],"collection":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=7756"}],"version-history":[{"count":6,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7756\/revisions"}],"predecessor-version":[{"id":7766,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7756\/revisions\/7766"}],"wp:attachment":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=7756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=7756"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=7756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}