First steps into Functional Programming
In recent years you may have found yourself hearing more and more about this trendy topic of “functional programming", from a bunch of excited coders enthusiastically gushing about how it helps them write elegant, modular code that's easier to test, debug, and reason about. If you're like me, you may have started wondering:
- What is functional programming anyway, and why are people so excited about it?
- What does functional code look like? How is it different from imperative or OO code?
- What tools do I need to write functional programs? Do I have to learn Haskell? (spoiler alert: no!)
If you too have been asking yourself questions like these, please join me in this friendly, practical exploration of functional programming fundamentals.
What we'll do:
Via a series of exercises in JavaScript, we'll see that in essence, FP boils down to one basic idea: avoid side effects by using pure functions. In this workshop, we’ll discover what that means, and why it's so helpful.
We'll learn how to follow the basic principles of the paradigm, such as:
- construct programs from pure, “input in-output out” functions through which data flows
- use higher-order functions like map & filter instead of iterative loops, and closures instead of objects & classes
- avoid mutation (changing things in-place), and use immutable data structures for efficiency
What you'll take away:
And the end of our journey, you’ll be motivated to open your mind to this elegant and fascinating paradigm, and armed with all the basic concepts you need to be able to start writing more functional code - and more importantly, learning to think in a functional way.
Who will benefit:
You'll get the most out of this workshop if you're a programmer who's new to functional programming but curious about the advantages and principles of FP, and want to explore it as an alternative to imperative/object-oriented code. Examples will be in JavaScript, and familiarity with JS will be helpful, but not strictly necessary.
For masterclass instructions & requirements, please check out https://github.com/vakila/functional-workshop