Update README
This commit is contained in:
parent
53df8dfced
commit
917dacf3c2
49
README.md
49
README.md
|
@ -1,5 +1,48 @@
|
||||||
# Profunctor Optics in Idris2
|
# Profunctor Optics in Idris2
|
||||||
|
|
||||||
This package provides utilities for working with profunctor optics.
|
This package provides utilities for working with lenses, prisms, traversals,
|
||||||
Its design is based on the Haskell libraries [fresnel](https://hackage.haskell.org/package/fresnel)
|
and other optics in Idris. This library uses *profunctor optics*.
|
||||||
and [lens](https://hackage.haskell.org/package/lens).
|
|
||||||
|
Eventually, this library will also include elaboration scripts to automatically
|
||||||
|
generate lenses for a particular datatype.
|
||||||
|
|
||||||
|
## Comparisons
|
||||||
|
|
||||||
|
This library is inspired by the Haskell libraries [lens](https://hackage.haskell.org/package/lens-5.2.2),
|
||||||
|
[optics](https://hackage.haskell.org/package/optics) and [fresnel](https://hackage.haskell.org/package/fresnel),
|
||||||
|
along with the Purescript library [purescript-profunctor-lenses](https://pursuit.purescript.org/packages/purescript-profunctor-lenses/8.0.0).
|
||||||
|
Different design decisions are taken from each library.
|
||||||
|
|
||||||
|
Like `lens`, this library comes "batteries-included" with many useful lenses for
|
||||||
|
common types. It also includes the many lens operators. Like `optics`, `fresnel`
|
||||||
|
and `purescript-profunctor-lenses`, but unlike `lens`, this library uses
|
||||||
|
profunctor optics as opposed to van Laarhoven optics.
|
||||||
|
|
||||||
|
Like `lens` and `fresnel`, this library defines optics through type synonyms and
|
||||||
|
uses the `(.)` operator to compose them. Like `fresnel`, and unlike `lens`,
|
||||||
|
this library goes to some effort to ensure that type signatures and error
|
||||||
|
messages are understandable to some degree.
|
||||||
|
|
||||||
|
This library's optics hierarchy is most similar to that of `fresnel`, though it
|
||||||
|
also includes the `Equality` optic from `lens`. Unlike `fresnel`, this library also
|
||||||
|
supports indexed optics.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
This package depends on the `profunctors` package. It can be installed from `pack`
|
||||||
|
or from its GitHub repository [here](https://github.com/kiana-S/idris2-profunctors).
|
||||||
|
|
||||||
|
To install using `idris2` directly:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
git clone https://github.com/kiana-S/idris2-lens
|
||||||
|
cd idris2-lens
|
||||||
|
idris2 --install lens.ipkg
|
||||||
|
```
|
||||||
|
|
||||||
|
Or you can install using [pack](https://github.com/stefan-hoeck/idris2-pack):
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
pack install lens
|
||||||
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue