dwyl / dwyl/learn-elixir

Learn Functional Programming with Elixir by Ulisses Almeida

Open
#64 0 comments 6 reactions 0 assignees View on GitHub
enhancement starter
Dominant language
Elixir
Stars
1.7k
Forks
112
PR merge metrics
No merged PRs in 30d

Description

Not quite a [book](https://pragprog.com/book/cdc-elixir/learn-functional-programming-with-elixir) for absolute beginners, but most certainly a level or two down in difficulty and preparation than the Dave Thomas' book "Programming Elixir". It will be a useful book to learn the micropatterns ( see [micropatterns article](https://medium.com/@cameronp/functional-programming-is-not-weird-you-just-need-some-new-patterns-7a9bf9dc2f77) and [micropatterns video](https://www.youtube.com/watch?v=9uvp4h7gXHg)) of functional programming for those needing to learn it, but not of the desire to go off to [Scheme Land](http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html).

Here the author, Ulisses Almeida, compares within the Elixir forum the main differences between his text and that of Dave Thomas:

>In Programming Elixir by Dave, he will guide you through all Elixir feature showing you some concepts of functional programming, concurrent programming, and testing. The book is for experienced developers. In Learn Functional Programming with Elixir by Ulisses (what me?), it will guide you only though functional concepts and show you Elixir. The book is for beginners, then a lot of examples will be step by step.
>
>A good example is the "recursive functions" subject. In Programming Elixir you'll have ten pages that describe the recursive function and quickly jump to lists navigation, high order functions, and tail call optimization. In Learn Functional Programming With Elixir, we have entire a chapter with more than 20 pages about recursive functions. You'll see bounded and unbounded recursion, decrease and conquer, divide and conquer, tail call optimization, and anonymous recursive functions. Then, we have another chapter with more than 20 pages to explain high-order functions, giving you several examples from simples lists operations to lazy computation.
>
>I'll hope this explanation help you understand the difference between the two books.

For further information on the necesssary preparation, here is a passage from the beginning of the book:

>This book was tailored for beginners in functional programming and Elixir. I expect you have some experience in building simple algorithms, debugging errors, running commands in terminal, and an entry-level knowledge of software development. Any experience in others languages will help you out. You don’t need to be an expert because we’ll start from the scratch.
>
>If you are an object-oriented programmer ready to take the next step, or a college student graduating and looking for a language to work with, this book is for you. If you tried to program in Elixir before and have had a hard time because of the functional programming concepts, this book will teach you the missing knowledge that you need to become a future expert. If you’re already an Elixir or functional programming expert, you may find some valuable tips here, but this book probably isn’t for you.

My basic feeling is that those who have already done some prior Elixir study would be more than enough prepared to tackle this text. It will hopefully solve the problem of having to learn the basic Elixir functional programming patterns so as to then go on to Phoenix, and has a fuller discussion of the use-cases of pattern matching than is found within the free resources. Too, it is written from the point of view of teaching those for whom functional programming is not the first paradigm they were introduced to, so includes within its audience those for whom Javascript was their first exposure to programming.

Yeah! That is all.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.