bug: documentation for Control.Monad.guard not useful after AMP
Since the AMP refactor, the documentation for Control.Monad.guard [1] is no longer useful for beginners. It simply gives the definition of guard, but in prose:
guard b is pure () if b is True, and empty if b is False.
(and better to just use Haskell instead of prose here, no?)
To use guard in a MonadPlus, you now need to know that Alternative is a super class of MonadPlus, and that mzero = zero. The documentation [2] for MonadPlus doens't mention mzero = zero in the default definition -- you must look at the source for that -- and the docs for guard don't mention MonadPlus.
The documentation for Control.Monad.guard should suggest use with MonadPlus, and give an example (compare with the very helpful example for Control.Monad.when). A non-monadic example would also be useful.
[1] https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#v:guard
[2] https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#t:MonadPlus
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |