# Not a Functor

## Not a Functor

Imagine that we’ve created a new type to represent a *sorted* list of
values:

```
{-# LANGUAGE DerivingStrategies #-}
module SortedListFunctor (SortedList, insertSorted) where
data SortedList a = Empty | Cons a (SortedList a)
deriving stock (Eq, Show)
insertSorted :: Ord a => a -> SortedList a -> SortedList a
Empty = Cons a Empty
insertSorted a Cons b bs)
insertSorted a (| a >= b = Cons b (insertSorted a bs)
| otherwise = Cons a (Cons b bs)
```

Although `SortedList`

might be useful, it turns out that you can’t write a
*correct* instance of `Functor`

for a `SortedList`

. Try to define `Functor`

yourself and experiment with it’s behavior. See if you can figure out why you
can’t write a correct instance.

### Hint 1

Some high level hint text

### Hint 2

Some more detailed hint text

### Hint 3

Even more detailed hint text

### Solution

A complete solution for the exercise