[GHC] #14349: Semigroup/Monoid instances for System.Exit.ExitCode
GHC
ghc-devs at haskell.org
Fri Oct 13 14:30:10 UTC 2017
#14349: Semigroup/Monoid instances for System.Exit.ExitCode
-------------------------------------+-------------------------------------
Reporter: neil.mayhew | Owner: (none)
Type: feature request | Status: upstream
Priority: low | Milestone:
Component: libraries/base | Version: 8.2.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by neil.mayhew):
* cc: hvr, ekmett, core-libraries-committee (added)
Comment:
As far as I can see, the only other reasonable `Monoid` instance would be
to have success if any succeeded, but this is almost never what you want.
It would be possible to use a similar approach to the `Any`/`All` newtypes
for `Bool`, but this seems like overthinking it.
It would be possible to favour the rightmost failure, but I don't see much
point in this. That's why I mentioned `set -e`, which returns the exit
code of the first, ie leftmost, failure. The fact that bash short-circuits
the rest of the evaluation is mostly an issue of lazy evaluation. The
semantics of the summary exit code are the same, although of course the
side effects are different.
Adding a named function would be a valid approach, but it's a pity to add
a single-use function when we already have a nice general way to view the
problem with `Monoid`.
If `mempty` is an issue then it could be a `Semigroup` instance. However,
it seems natural to me that running no child processes is considered
successful.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14349#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list