# Functor

### From HaskellWiki

The represents a type that can be mapped over.
See also Applicative functor which is a special case of

, which has the ability for it's value(s) to be mapped over can become an instance of the typeclass. That is to say, a new , can be made from by transforming all of it's value(s), whilst leaving the structure of itself unmodified.
Declaring an instance of allows functions relating to mapping to be used on structures of type for all .
Functors are requred to obey certain laws in regards to their mapping. Ensuring instances of obey these laws means the behaviour of remains predictable.
returns an identical functor as the original, with it's values swapped to the result of calling a given function with the original value as an argument.

**typeclass represents the mathematical functor: a mapping between categories in the context of category theory. In practice a**Functor

functor

Functor

## Contents |

## 1 Packages

- (base) Prelude
- (base) Data.Functor
- (base) Control.Monad

## 2 Syntax

class Functor f where fmap :: (a -> b) -> f a -> f b (<$) :: a -> f b -> f a

### 2.1 Minimal Complete Definition

fmap

## 3 Description

An abstract datatypef a

Functor

Functor

f b

f a

f

f

Functor

f a

a

Functor

fmap

### 3.1 Functor Laws

- Functors must preserve identity morphisms
fmap id = id

- When performing the mapping operation, if the values in the functor are mapped to themselves, the result will be an unmodified functor.
- Functors preserve composition of morphisms
fmap (f . g) == fmap f . fmap g

- If two sequential mapping operations are performed one after the other using two functions, the result should be the same as a single mapping operation with one function that is equivalent to applying the first function to the result of the second.

fmap

## 4 Methods

fmap :: (a -> b) -> f a -> f b

- Create a new , from anf busing the results of calling a function on every value in thef a.f a

(<$) :: a -> f b -> f a

- Create a new , from anf aby replacing all of the values in thef bby a given value of typef b.a

## 5 Related Functions

($>) :: f a -> b -> f b

- Create a new , from anf bby replacing all of the values in thef aby a given value of typef a.b

(<$>) :: (a -> b) -> f a -> f b

- An infix synonym for Data.Functor.fmap

void :: Functor f => f a -> f ()

- create a new from anf ()by replacing all of the values in thef abyf a()