# what's the problem ?

## Category theory

Category theory is used to formalize mathematics and its concepts as a collection of objects and arrows (also called morphisms). Category theory can be used to formalize concepts of other high-level abstractions such as set theory, field theory, and group theory. ## category theory

Several terms used in category theory, including the term "morphism", differ from their uses within mathematics itself.
In category theory, a "morphism" obeys a set of conditions specific to category theory itself. Thus, care must be taken to understand the context in which statements are made.

## WTF is a category ??

In mathematics, a category is an algebraic structure that comprises "objects" that are linked by "arrows". # That'd be great

YEAAAH, IF YOU COULD ACTUALLY DEFINE WHAT THIS IS ABOUT.

## wtf is a morphism ??

In many fields of mathematics, morphism refers to a structure-preserving mapping from one mathematical structure to another.
In set theory, morphisms are functions; in linear algebra, linear transformations; in group theory, group homomorphisms; in topology, continuous functions, and so on.
In category theory, morphism is a broadly similar idea, but somewhat more abstract: the mathematical objects involved need not be sets, and the relationship between them may be something more general than a map.

## Type system

a type is a classification identifying one of various types of data,that determines the possible values for that type; the operations that can be done on values of that type [...]

## functions

a function is a relation between a set of inputs and a set of permissible outputs with the property that each input is related to exactly one output.

## function

``val id = (x: Int) => x``val sqrt = (x: Int) => x * x``val random = () => scala.util.Random.nextInt ``val const = (x: Int) => 42``

# what's the problem ?

## FUNCTOR

A functor is a type of mapping between categories, which is applied in category theory. Functors can be thought of as homomorphisms between categories. In the category of small categories, functors can be thought of more generally as morphisms.

## endofunctor

Endofunctor: A functor that maps a category to itself.

# what's the problem ?

## monoid

a monoid is an algebraic structure with a single associative binary operation and an identity element.

# what's the problem ?

a monad is an (endo-)functor, together with two natural transformations.

natural transformation provides a way of transforming one functor into another while respecting the internal structure

## LET'S IMPLEMENT THAT!

### A monoid is...

1. A set, S
2. An operation, • : S × S -> S
3. An element of S, e : 1 -> S

1. An endofunctor, T : X -> X
2. A natural transformation, μ : T × T -> T,
3. A natural transformation, η : I -> T

#### A monad is just a monoid in the category of endofunctors. what's the problem ?

By Julien Tournay

• 12,307