-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
16 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# 2018.09.21 | ||
|
||
## Capability type-class laws | ||
|
||
The capabilities `HasReader`, `HasState`, and `HasWriter` provide the same | ||
interface as the corresponding Mtl type classes, apart from the tags. | ||
Unfortunately, neither the Mtl documentation, nor the transformers documentation | ||
specify any laws for these type classes. A discussion about this can be | ||
found on the [mtl issue tracker](https://github.com/haskell/mtl/issues/5). | ||
|
||
This library does define laws for the capability classes based on the above | ||
mentioned mtl issue. At this point these are not definitive. | ||
A detailed discussion of the state laws, and formal proofs written in Agda | ||
can be found can be found in | ||
[this](http://gallium.inria.fr/blog/lawvere-theories-and-monads/) | ||
blog post by Pierre Dagand. |