You might already know the map function: map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs > map (\x -> x + 1) [1, 2, 3] [2, 3, 4] It takes a function of type a -> b and applies it to each element of a list. The elements change, but the data type storing them ([]) remains the same. In this article, we’ll call such a data type with another type inside it a context. Transform
![Functor Typeclass in Haskell](https://cdn-ak-scissors.b.st-hatena.com/image/square/84b6fc1dd64b1f423645f8a9416fa8daab18d77a/height=288;version=1;width=512/https%3A%2F%2Fserokell.io%2Ffiles%2F1r%2Fopengraph.1r0vhxu1.normal-Functor.png)