• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

src/Data/H03-May-2022-375206

src-compat/Data/H03-May-2022-94

tests/H09-Sep-2001-12070

.hlint.yamlH A D09-Sep-200177 42

.travis.ymlH A D09-Sep-20018.9 KiB179177

.vim.customH A D09-Sep-2001767 3223

CHANGELOG.markdownH A D09-Sep-20012 KiB7962

LICENSEH A D09-Sep-20011.2 KiB2721

README.markdownH A D09-Sep-20011.1 KiB3320

Setup.lhsH A D09-Sep-2001673 3525

Warning.hsH A D09-Sep-2001256 62

configH A D09-Sep-2001646 1715

distributive.cabalH A D03-May-20223.1 KiB123104

travis-cabal-apt-installH A D09-Sep-2001519 1710

README.markdown

1distributive
2============
3
4[![Hackage](https://img.shields.io/hackage/v/distributive.svg)](https://hackage.haskell.org/package/distributive) [![Build Status](https://secure.travis-ci.org/ekmett/distributive.png?branch=master)](http://travis-ci.org/ekmett/distributive)
5
6This package provides the notion that is categorically dual to `Traversable`.
7
8A `Distributive` `Functor` is one that you can push any functor inside of.
9
10```haskell
11distribute :: (Functor f, Distributive g) => f (g a) -> g (f a)
12```
13
14Compare this with the corresponding Traversable notion, `sequenceA`.
15
16```haskell
17sequenceA :: (Applicative f, Traversable g) => g (f a) -> f (g a)
18```
19
20This package includes instances for common types, and includes other methods similar to `traverse` which fuse the use of `fmap`.
21
22We only require `Functor` rather than some dual notion to `Applicative`, because the latter cannot meaningfully exist in Haskell
23since all comonoids there are trivial.
24
25Contact Information
26-------------------
27
28Contributions and bug reports are welcome!
29
30Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.
31
32-Edward Kmett
33