exotic-list-monads: Non-standard monads on lists and non-empty lists

[ library, list, mit, monads ] [ Propose Tags ]

The usual list monad is only one of infinitely many ways to turn the list functor into a monad. The same applies to the usual non-empty list monad and the non-empty list functor. This library collects such non-standard "list" and "non-empty list" monads.


[Skip to Readme]
Versions [RSS] [faq] 1.0.0, 1.0.1
Change log CHANGELOG.md
Dependencies base (>=4.9 && <5) [details]
License MIT
Copyright (c) 2020 Dylan McDermott, Maciej Piróg, Tarmo Uustalu
Author Maciej Piróg <maciej.adam.pirog@gmial.com>
Maintainer Maciej Piróg <maciej.adam.pirog@gmail.com>
Category List, Monads
Home page http://github.com/maciejpirog/exotic-list-monads
Bug tracker http://github.com/maciejpirog/exotic-list-monads/issues
Source repo head: git clone https://github.com/maciejpirog/exotic-list-monads
Uploaded by maciejpirog at 2020-10-04T19:15:23Z
Distributions NixOS:1.0.1
Downloads 192 total (11 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-10-04 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates


Readme for exotic-list-monads-1.0.1

[back to package description]

exotic-list-monads

The usual list monad is only one of infinitely many ways to turn the list functor into a monad. The same applies to the usual non-empty list monad and the non-empty list functor. This library collects such non-standard "list" and "non-empty list" monads.

Most of the constructions implemented in this library have been first introduced in the paper Degrading lists by Dylan McDermott, Maciej PirĂ³g, and Tarmo Uustalu (PPDP 2020), but there are some new specimens as well.

It is quite possible that there exist "list" and "non-empty list" monads that we are not aware of, so pull requests are appreciated. Moreover, not every monad in this library has been formally verified to be a monad (it is not a trivial task because of combinatorial explosions of the number of cases to be considered in some proofs of associativity), so if you're currently playing around with tools like Coq and have a spare afternoon...