First of all, I would like to thank all the contributors to this library!
For our project, we've been searching for a Coq library of monad theory and among few alternatives we chose monae.
Currently, we need just a basic stuff: basic hierarchy (functors, natural transformations, monads, nondet monads) and basic instances (list, state, etc). We've been really happy to find everything we need in monae.
However, a big list of library dependencies was a bit disappointing.
For example, a dependency on coq-infotheo was surprising, as well as dependencies on mathcomp-fingroup, mathcomp-solvable, etc. From what I understood after a quick pass over the sources, coq-infotheo is used mostly for the probability monad. The boolp.v library from mathcomp-analysis is used heavily for "classical" reasoning. I haven't understood how mathcomp-fingroup, mathcomp-field, etc are used.
Since the monad theory is a cornerstone of PL theory, it would be really nice to have a core library of monad theory with a minimalistic list of dependencies. If you'll be interested in achieving this goal I would be happy to help with this and prepare a PR.
I think there are two possible ways to achieve this:
(1) split the library into two: something like monae-core with a basic hierarchy of monads and common theory,
and e.g. monae-prob with the probability monad
(2) use opam's depopts feature and install various advanced features of the library (e.g. prob monad) only if the user already has all required packages installed.
First of all, I would like to thank all the contributors to this library!
For our project, we've been searching for a Coq library of monad theory and among few alternatives we chose
monae.Currently, we need just a basic stuff: basic hierarchy (functors, natural transformations, monads, nondet monads) and basic instances (list, state, etc). We've been really happy to find everything we need in
monae.However, a big list of library dependencies was a bit disappointing.
For example, a dependency on
coq-infotheowas surprising, as well as dependencies onmathcomp-fingroup,mathcomp-solvable, etc. From what I understood after a quick pass over the sources,coq-infotheois used mostly for the probability monad. Theboolp.vlibrary frommathcomp-analysisis used heavily for "classical" reasoning. I haven't understood howmathcomp-fingroup,mathcomp-field, etc are used.Since the monad theory is a cornerstone of PL theory, it would be really nice to have a core library of monad theory with a minimalistic list of dependencies. If you'll be interested in achieving this goal I would be happy to help with this and prepare a PR.
I think there are two possible ways to achieve this:
(1) split the library into two: something like
monae-corewith a basic hierarchy of monads and common theory,and e.g.
monae-probwith the probability monad(2) use opam's
depoptsfeature and install various advanced features of the library (e.g. prob monad) only if the user already has all required packages installed.