Skip to content

Commit

Permalink
rename links *.MD => *.md
Browse files Browse the repository at this point in the history
  • Loading branch information
lemastero committed Dec 4, 2024
1 parent eaa18cc commit 1016df4
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 39 deletions.
6 changes: 3 additions & 3 deletions BasicAbstractions.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def widen[A, B >: A](fa: F[A]): F[B]

Functor definition does not require any conditions on type constructor `F` or any other operations (unlike Applicative, Monad).
Therefore pretty much everything is a Functor. Notable exceptions are:
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`.
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`.
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/)
3. abstractions that behave like a Functor but not there are some controversies:

Expand All @@ -82,7 +82,7 @@ Therefore pretty much everything is a Functor. Notable exceptions are:

* Many abstractions have enough structure, so we can define `map` that obeys the laws. Such as `Monad` defined using `pure` and `flatMap`.
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.
See [Free constructions](./Free.MD#free-constructions) for `Free functors`.
See [Free constructions](./Free.md#free-constructions) for `Free functors`.

* Resources:
* herding cats - Functor - @eed3si9n [(blog post)](http://eed3si9n.com/herding-cats/Functor.html)
Expand Down Expand Up @@ -474,7 +474,7 @@ trait StateMonad[F[_],S] extends Monad[F] {

### State Monad

You can define useful operations on [State](./README.MD#state). This could be abstract over in `StateMonad` typeclass:
You can define useful operations on [State](./README.md#state). This could be abstract over in `StateMonad` typeclass:
```scala
trait StateMonad[F[_],S] extends Monad[F] {
def update: (S => S) => F[S]
Expand Down
2 changes: 1 addition & 1 deletion FunctionalDataStructures.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# [Functional data structures](./FunctionalDataStructures.MD)
# [Functional data structures](./FunctionalDataStructures.md)
* Resources:
* [typelevel/cats-collections](https://github.com/typelevel/cats-collections)
* [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)
Expand Down
Loading

0 comments on commit 1016df4

Please sign in to comment.