You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Functor definition does not require any conditions on type constructor `F` or any other operations (unlike Applicative, Monad).
73
73
Therefore pretty much everything is a Functor. Notable exceptions are:
74
-
1. function input arguments (they are in `negative position`) or any input like type - see [Contravariant](./Contravariant.MD#contravariant-contravariant-functor) We can define Functor only for return type - because type is in `positive position`.
74
+
1. function input arguments (they are in `negative position`) or any input like type - see [Contravariant](./Contravariant.md#contravariant-contravariant-functor) We can define Functor only for return type - because type is in `positive position`.
75
75
2. abstractions where type can be both input and output, see [Invariant](#invariant-invariant-functor-exponential-functor) and blog post [Rotten Bananas by Edward Kmett](http://comonad.com/reader/2008/rotten-bananas/)
76
76
3. abstractions that behave like a Functor but not there are some controversies:
77
77
@@ -82,7 +82,7 @@ Therefore pretty much everything is a Functor. Notable exceptions are:
82
82
83
83
* Many abstractions have enough structure, so we can define `map` that obeys the laws. Such as `Monad` defined using `pure` and `flatMap`.
84
84
Another notable example is `Coyoneda` that wraps any type constructor and allows to use `map` on it. Functor instance is neccessary only when we want to extract the end result.
85
-
See [Free constructions](./Free.MD#free-constructions) for `Free functors`.
85
+
See [Free constructions](./Free.md#free-constructions) for `Free functors`.
*[What's new in purely functional data structures since Okasaki?](https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki)
0 commit comments