Original article
Composed of three functions and encodes control flow which allows pure functions to be strung together.
recursive function
A function that calls itself inside its own definition.
allows you to stack more than one monad for use in a function.
Lift
an operation on a functor that uses fmap to operate on the data contained in the functor.
Optics(lens and prisms)
allow you to get and set data in a data type.
Currying
uses partial application to return a function until all arguments are filled.
Map
applies a function to every element of a list.
predicate
a function that returns true or false.
Filter
applies a predicate to a list and returns only elements which return true.
Pure functions
always return the same output for a given input regardless of environment and cause no side effects.
lambda
an unnamed function.
Lazy evaluation
only evaluates expressions that your program actually uses.
Fold
applies a function between elements of a list.
morphism
a transformation from any object to any other object.
category
a collection of objects, morphisms, and the configuration of the morphisms.
Functors
objects that can be fmap‘ed over.
Types
an inherent characteristic of every Haskell expression.
Type classes
similar to OOP interfaces.
Algebraic data types
a method to describe the structure of types.
Parametric polymorphism
allows generic type variables in place of types in the type signature of a function.
monoid
a type with a single operation for combining values.
### fmap
 1  ewwlinks +/"fmap" "https://wiki.haskell.org/Functor"