
Security News
CVE Volume Surges Past 48,000 in 2025 as WordPress Plugin Ecosystem Drives Growth
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.
functional-javascript-workshop
Advanced tools
The basics of functional programming in JavaScript. No libraries required.
Many functional programming learning resources will teach you to write functional code, but it's often highly indirect, deeply abstracted, requires understanding complex relationships between custom library calls, and doesn't represent the reality of how people actually write JavaScript.
The goal of this workshop is to create realistic problems that can be solved using terse, vanilla, idiomatic JavaScript.
Please read the exercises thoroughly and obey all conditions, they are there to help you learn!
$ npm install -g functional-javascript-workshop@latest
Some npm installations require use of sudo in the above command. Recommend to instead reinstall node/npm so you don't need sudo.
Once the workshop is installed, run functional-javascript-workshop to print a menu
where you can select a problem to work on.
$ functional-javascript-workshop
Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems.
Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. Most problems will supply some boilerplate with which to get started. Copy this from the problem description to your solution file.
Use the workshop's run command to point the workshop at your solution file. Your solution will loaded
and passed the problem input. This usually won't perform any validation, it will only show the program output.
$ functional-javascript-workshop run mysolution.js
Your solution will be verified against the output of the 'official' solution. If all of the output matches, then you have successfully solved the problem!
$ functional-javascript-workshop verify mysolution.js
Feedback and criticism is welcome, please log your troubles in issues.
Full curriculum reviews like this one are incredibly helpful. More feedback like this please!
We're looking for more practical problems, so if you come across a problem in your day-to-day work which was solved simply and elegantly with some functional JavaScript techniques, please help us create an exercise out of it.

A growing collection of quality functional javascript resources can be found in the wiki.
This tutorial was built using rvagg's workshopper framework.
project : functional-javascript
repo age : 7 months
active : 50 days
commits : 152
files : 70
authors :
69 Tim 45.4%
67 Tim Oxley 44.1%
3 Sequoia McDowell 2.0%
2 ZJ 1.3%
1 Naor Biton 0.7%
1 Pavel Kornilov 0.7%
1 Steve Teo 0.7%
1 Wei Lu 0.7%
1 Yoshua Wuyts 0.7%
1 flakyfilibuster 0.7%
1 Arvid Andersson 0.7%
1 tim walker 0.7%
1 Brendon Murphy 0.7%
1 Lorcan Coyle 0.7%
1 Matthew Hokanson 0.7%
MIT
FAQs
The basics of functional programming in JavaScript. No libraries required.
We found that functional-javascript-workshop demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.

Security News
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.

Security News
Tailwind Labs laid off 75% of its engineering team after revenue dropped 80%, as LLMs redirect traffic away from documentation where developers discover paid products.