Task: Applicative programming
Information
Instead of discussing the theory on lexical scoping and closures, we will just go straight to more code. If you want to read the theory, we recommend checking out this link after the workshop: Eloquent JavaScript chapter 3
First up is applicative programming. In general, applicative programming is the pattern of defining a function that takes a function and then invokes that function for each element in a collection. We will look at three central functions: map, filter and reduce. These are central building blocks of what we are learning today.
Applicative programming works best with pure functions, i.e. functions that have no side effects: it references no other mutable state, does not set any values other than the return value, and relies only on the parameters given as input.
Tasks
- Part 0: Introduction to the workshop
- Part 1: A functions context
- Part 1: A functions arguments
- Part 1: Functions and prototypes
- Part 2: Applicative programming [Active]
- Part 2: Make new collections with map
- Part 2: Make new collections with filter
- Part 2: Make new collections with reduce
- Part 2: Using helper liberaries
- Part 2: Point-free style
- Part 2: Applicative functions with context
- Part 3: Function factories
- Part 3: Higher order functions
- Part 3: Functions with functions
- Part 3: Fluent interfaces
- Part 3: Function arity
- Part 4: Partial application
- Part 4: Create functions from functions
- Part 5: Currying
- Part 5: Composition
- Part 5: Pipelines
- Part 5: Case - Parse URL
- Part 6: Shared state
- Part 7: Working with collections
- Part 7: Done
Help
Available globals
_
: Lo-dash.jslog
: log-command that logs to view and console
Testing
describe
: new test suite (mocha)it
: new test (mocha)xit
: pending test (mocha)xdescribe
: pending scenario (mocha)before/after
: run code before or after all tests (mocha)beforeEach/afterEach
: run code before or after each tests (mocha)chai
: chai.js assertion library