https://github.com/lysxia/profunctor-monad
Bidirectional programming in Haskell with monadic profunctors
https://github.com/lysxia/profunctor-monad
Last synced: 10 months ago
JSON representation
Bidirectional programming in Haskell with monadic profunctors
- Host: GitHub
- URL: https://github.com/lysxia/profunctor-monad
- Owner: Lysxia
- License: mit
- Created: 2016-12-19T18:19:05.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-05-17T04:50:00.000Z (about 4 years ago)
- Last Synced: 2025-02-27T10:35:13.816Z (over 1 year ago)
- Language: Coq
- Homepage:
- Size: 38.1 KB
- Stars: 46
- Watchers: 7
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Bidirectional Programming with Monadic Profunctors
==================================================
This package provides tools to work with *monadic profunctors*:
types that are both monads and profunctors.
Applications
------------
Currently known instances of monadic profunctors are certain types of
bidirectional programs, i.e., programs that have "invertible" interpretations.
- `attoparsec` (parsing) wrapper: [`unparse-attoparsec`](https://github.com/Lysxia/unparse-attoparsec)
- `QuickCheck` (random generation) wrapper: [`gap`](https://github.com/Lysxia/gap)
- `lens` wrapper: [`lens-monad`](https://github.com/Lysxia/lens-monad)
See also
--------
- [`codec`](https://hackage.haskell.org/package/codec) for a general
monadic profunctor for bidirectional programming, has implementations for
`aeson` and `binary`. The idea of monadic profunctors first came from this
package.
### More bidirectional programming in Haskell
- [`lens`](https://hackage.haskell.org/package/lens)
- [`boomerang`](https://hackage.haskell.org/package/boomerang)
- [`roundtrip`](https://hackage.haskell.org/package/roundtrip)
### Generic programming with monoidal profunctors
- [`product-profunctors`](https://hackage.haskell.org/package/product-profunctors)
- [`one-liner`](https://hackage.haskell.org/package/one-liner)