b127f43b

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Read a Validation's failure only where it accumulates

base, mtl and transformers fix the argument order of Either, Except, ExceptT
and MonadError, so matching those names is matching the types we think they
are. Nothing fixes Validation: it is a name several packages define, and one
that put its success first would read the same way here, so a bare String in
the first argument was as likely to be a success as a failure. The rule had no
way to tell and no way to say so.

What tells the orders apart is that this one accumulates. A container of prose
in the first argument is not something a success-first type would have, so only
a list or a NonEmpty of prose is read as prose there. The recall that costs is
recall over code nobody writes, since a Validation that does not accumulate is
an Either with more syllables: over nix-ci8, smos, salsa, kronor, sydtest,
validity and graphql-engine the findings are the same 1531 as before, and all
eight Validation findings among them were already written as
Validation (NonEmpty Text).

good.hs holds the silence so it stays a decision.

Total

1m00s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 5s 0s 0s 6s 5s
Eval 6s 37s 37s 44s 0s
Build 23s 0s 42s 1m06s 21s
Suite 5s 38s 1m00s 1m06s 27s

Timeline

Config Eval Build Compressed gap
0s10s20s30s40s