### So Doc >> Haskell Language

##### 78 Topics

## Getting started with Haskell Language Introduction Topic

## Common GHC Language Extensions

## Lens

Lens is a library for Haskell that provides lenses, isomorphisms, folds, traversals, getters and setters, which exposes a uniform interface for querying and manipulating arbitrary structures, not unlike Java's accessor and mutator concepts.

## IO

## Foldable

`Foldable`

is the class of types `t :: * -> *`

which admit a *folding* operation. A fold aggregates the elements of a structure in a well-defined order, using a combining function.

## Monads

A monad is a data type of composable actions. `Monad`

is the class of type constructors whose values represent such actions. Perhaps `IO`

is the most recognizable one: a value of `IO a`

is a "recipe for retrieving an `a`

value from the real world".

We say a type constructor `m`

(such as `[]`

or `Maybe`

) *forms a monad* if there is an `instance Monad m`

satisfying certain laws about composition of actions. We can then reason about `m a`

as an "action whose result has type `a`

".

## Functor

`Functor`

is the class of types `f :: * -> *`

which can be covariantly *mapped* over. Mapping a function over a data structure applies the function to all the elements of the structure without changing the structure itself.