Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .cache/vale/Vocab/duoids/accept.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .cache/vale/config/vocabularies/duoids/accept.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion .config/project/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@
## i686-linux again …
programs.prettier.enable = lib.mkForce true;
};
vale.enable = true;
vale = {
enable = true;
vocab.${config.project.name}.accept = ["duoid"];
};
};

## CI
Expand Down
6 changes: 3 additions & 3 deletions algebraic-graphs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
[![Packaging status](https://repology.org/badge/tiny-repos/haskell:duoids.svg)](https://repology.org/project/haskell:duoids/versions)
[![latest packaged versions](https://repology.org/badge/latest-versions/haskell:duoids.svg)](https://repology.org/project/haskell:duoids/versions)

Unifying parallel and sequential operations

Duoids relate a pair of monoids, where one can be seen as “parallel” and the other “sequential”.
[Duoids](https://hackage.haskell.org/package/duoids) applied to the [algebraic-graphs](https://hackage.haskell.org/package/algebraic-graphs) package.

## usage

There are `Duoid` instances for the various graph representations in `algebraic-graphs`. There are also some implementations of `Duoid` methods to make it easy to provide `Duoid` instances for _other_ `Graph` instances.

## versioning

This project largely follows the [Haskell Package Versioning Policy](https://pvp.haskell.org/) (PVP), but is more strict in some ways.
Expand Down
6 changes: 5 additions & 1 deletion core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,16 @@ The `async` package has a `Concurrently` newtype over `IO` that’s the same as

### [either](https://hackage.haskell.org/package/either)

The `either` package has a `Validation` type that’s isomorphic to `Either` and has an applicative instance that’s the same as the `Parallel (Either e)` instance here. However, it doesn’t have anything like the `Duoidal` class, and so requires manual conversion back and forth between `Either` and `Validation`.
The `either` package has a `Validation` type that’s isomorphic to `Either` and has an `Applicative` instance that’s the same as the `Parallel (Either e)` instance here. However, it doesn’t have anything like the `Duoidal` class, and so requires manual conversion back and forth between `Either` and `Validation`.

### [Haskerwaul](https://github.com/sellout/haskerwaul#readme)

A broader package that contains a more general (category polymorphic) implementation of duoids. It’s also much less pragmatic.

### [multi-except](https://hackage.haskell.org/package/multi-except)

This seems like another approach to `Validation`, but I haven’t used it.

### [United Monoids](https://github.com/snowleopard/united)

Andrey Mokhov’s independently-discovered implementation. I think united monoids are normal duoids in **Set**. United Monoids also offers a `Semilattice` class and avoids newtypes by treating the parallel semigroup (`overlay` in United Monoids) as primary, with sequential (`connect`) as an additional operation. It also forces both identities to be the same.
Expand Down
3 changes: 2 additions & 1 deletion core/duoids.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,8 @@ common defaults

library
import: defaults
hs-source-dirs: src
hs-source-dirs:
src
exposed-modules:
Control.Duoidal
Control.Duoidal.Either
Expand Down
Loading