Symbols & Terms - YuMingLiao/haskell_code GitHub Wiki

Proxy is a type that holds no data, but has a phantom parameter of arbitrary type (or even kind). Its use is to provide type information, even though there is no value available of that type (or it may be too costly to create one).

TypeFamilies allows users to write functions on types.

A functor is a structure-preserving transformation between categories.

An endofunctor is a functor from one category back to the same category.

A bijection is injective and surjective.

A semigroup is a set of elements together with an associative binary operation on those elements.

A monoid is a semigroup that contains an identity element.

A semigroupoid is a Category without id.

A monad is a monoid in the category of endofunctors.


A bifunctor in the mathematical sense is a functor of two arguments; three arguments would make trifunctors...

The Evolution of a Haskell Programmer

Useful Functions: sortOn

  • Monad is a type class.

  • A type class is a set of types.

  • A type is a set of values.

  • Every expression and function in Haskell has a type.

  • Functor is a type class.

  • In practice a functor is a type that can be mapped over (using function that apply inside).

  • Applicative is a type class.

  • Applicative functor which is a special case of Functor.

  • (Applicative functor can be applied by a function.)

  • Applicative compose, Monad don't.

  • Monad encapsulate side effects in Haskell. Monad can take actions.

  • A single-parameter type class is a set of types. A multi-parameter type class is a relation between types.

  • A variable is bound if it's defined inside the given expression and free if it isn't. In the function \ x -> a + x, x is bound because it's defined inside the lambda and a is free because it isn't.

  • is the kind of types which have values.

  • Dependent types are types that are parameterized by values.