A book about functional programming in JavaScript.
Permalink
Failed to load latest commit information.
CONTRIBUTING.md updating contribution guide Nov 10, 2016
ISSUE_TEMPLATE.md updating issue/pr templates Oct 21, 2016
LICENSE.txt updating with license, adding note about not being an 'intro' book, r… Sep 13, 2016
PULL_REQUEST_TEMPLATE.md updating issue/pr templates Oct 21, 2016
README.md ch7: introducing chapter content and setting context Dec 30, 2016
apA.md ch7: filling out 'fusion' section Oct 1, 2016
ch1.md preface, ch1: tweaking wording Oct 2, 2016
ch10.md adding stub for new ch7, updating chapter headers Dec 30, 2016
ch11.md adding stub for new ch7, updating chapter headers Dec 30, 2016
ch2.md ch2: adding note about 'morphism' to discussion of function inputs/ou… Jan 1, 2017
ch3.md ch3: fixing bug in code snippets Sep 27, 2016
ch4.md ch4: fixing code error, closes #30 Nov 8, 2016
ch5.md ch5: fixing mistake in code snippet on idempotency with DOM updates, … Jan 3, 2017
ch6.md ch6: finishing out 'treatment' and 'summary' sections Sep 25, 2016
ch7.md ch7: tweaking wording for clarity Jan 18, 2017
ch8.md ch7: introducing chapter content and setting context Dec 30, 2016
ch9.md adding stub for new ch7, updating chapter headers Dec 30, 2016
fig1.png first start to the book... yay :) Aug 17, 2016
fig10.png ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig10.svg ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig11.png ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig11.svg ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig12.png ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig12.svg ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig13.png ch8: starting discussion of recursion, adding some visual illustrations Oct 4, 2016
fig13.svg ch8: starting discussion of recursion, adding some visual illustrations Oct 4, 2016
fig14.png ch8: starting discussion of recursion, adding some visual illustrations Oct 4, 2016
fig14.svg ch8: starting discussion of recursion, adding some visual illustrations Oct 4, 2016
fig15.png ch8: adding to 'stack' section Oct 10, 2016
fig15.svg ch8: adding to 'stack' section Oct 10, 2016
fig16.png ch8: filling out sections on 'tail calls' and 'ptc' Oct 10, 2016
fig16.svg ch8: filling out sections on 'tail calls' and 'ptc' Oct 10, 2016
fig2.png ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig2.svg ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig3.png ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig3.svg ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig4.png ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig4.svg ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig5.png ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig5.svg ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig6.png ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig6.svg ch4: adding candy factory diagrams, clarifying some text Sep 17, 2016
fig7.png ch7: added 'beyond lists' section on other data structures Sep 30, 2016
fig8.png ch7: added 'beyond lists' section on other data structures Sep 30, 2016
fig8.svg ch7: added 'beyond lists' section on other data structures Sep 30, 2016
fig9.png ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
fig9.svg ch7: adding conceptual diagrams for map/reduce/filter Oct 2, 2016
preface.md preface, ch1: tweaking wording Oct 2, 2016
toc.md ch7: more on state Dec 31, 2016

README.md

Functional-Light JavaScript (book)


Please Support my Indiegogo Crowdfunding Campaign!

This book explores the core principles of functional programming (FP) that can be applied to JavaScript. But what makes this book different is that we approach these principles without drowning in all the heavy terminology. We look at a subset of FP foundational concepts that I call "Functional-Light Programming" (FLP) and apply it to JavaScript.

Note: Despite the word "Light" in the title, I do not consider or recommend this book as a "beginner", "easy", or "intro" book on the topic. This book is rigorous and full of gritty detail; it expects a solid foundation of JS knowledge before diving in. "Light" means limited in scope; instead of being more broad, this book goes much deeper into each topic than you typically find in other FP-JavaScript books.

Let's face it: unless you're already a member of the FP cool kids club (I'm not!), a statement like, "a monad is just a monoid in the category of endofunctors", just doesn't mean anything useful to us.

That's not to say the terms are meaningless or that FPrs are bad for using them. Once you graduate from Functional-Light, you'll maybe/hopefully want to study FP more formally, and you'll certainly have plenty of exposure to what they mean and why.

But I want you to be able to apply some of the fundamentals of FP to your JavaScript now, because I believe it will help you write better, more reasonable code.

To read more about the motivations and perspective behind this book, check out the Preface.

Book

Table of Contents

Publishing

It is expected this book will eventually be published, but nothing is in the works yet. Keep an eye out for future updates here!

If you'd like to contribute financially towards the effort (or any of my other OSS work) aside from purchasing the books, I do have a patreon that I would always appreciate your generosity towards.

patreon.png

In-person Training

The content for this book derives heavily from a training workshop I teach professionally (in both public and private-corporate workshop format) of the same name.

If you like this content and would like to contact me regarding conducting training on this, or other various JS/HTML5/Node.js topics, please reach out to me through any of these channels listed here:

http://getify.me

Online Video Training

I also have several JS training courses available in on-demand video format. I teach courses through Frontend Masters, like my Functional-Lite JS workshop. Some of those courses are also available on PluralSight.

Contributions

Any contributions you make to this effort are of course greatly appreciated.

But PLEASE read the Contributions Guidelines carefully before submitting a PR.

License & Copyright

The materials herein are all (c) 2016 Kyle Simpson.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License.