Commit Graph

2094 Commits

Author SHA1 Message Date
Simon Michael
2825a06e8e ;doc: csv: expand help on other separator characters
[ci skip]
2019-12-14 13:57:48 -08:00
Simon Michael
f099fb558e ;doc: csv: mention entr for rapid feedback
[ci skip]
2019-12-09 14:46:02 -08:00
Simon Michael
95aa2e16cc ;doc: fix some old wiki and Cookbook references (hledger_site/#10) 2019-12-09 06:08:03 -08:00
Simon Michael
c759c9b3de ;lib: fix some more warnings in Transaction 2019-12-09 06:08:03 -08:00
Simon Michael
13e6c7dfdf lib: drop "assertion" alias for nullassertion
Perhaps we'll stick with the null* convention. Fixes a warning in Transaction.hs.
2019-12-09 06:08:03 -08:00
Jacek Generowicz
29211868bb Fix issue 457
Issue #457 pointed out that commands such as

    hledger ui 'amt:>200'

failed. This was becasue the process of dispatching from `hledger ui`
to `hledger-ui` (note addition of `-`) lost the quotes around
`amt:>20` and the `>` character was interpreted as a shell redirection
operator, rather than as part of the argument.

The machinery for quoting or escaping arguements which cointain
characters which require quoting or escaping (thus far whitespace and
quotes) already existed. This solution simply adds shell stdio
redirection characters to this set.

Fixes #457
2019-12-08 18:33:43 +01:00
Simon Michael
5a2bcecf26 ;doc: finalise changelogs 2019-12-03 08:41:44 -08:00
Simon Michael
06b70194c0 ;doc: regen manuals 2019-12-03 08:41:44 -08:00
Simon Michael
093dca570d lib, cli, web: bump version to 1.16.1 2019-12-03 08:41:44 -08:00
Simon Michael
6ae837f820 ;doc: changelogs 2019-12-03 08:41:44 -08:00
Simon Michael
e032eff8eb ;doc: changelog updates 2019-12-02 08:59:58 -08:00
Simon Michael
0ce890e5ff lib, cli, web: drop unnecessary mtl-compat dependency 2019-12-02 08:23:00 -08:00
Simon Michael
62a9e1aa62 ;lib: clarify Hledger.Read imports a little 2019-12-02 08:21:06 -08:00
Simon Michael
a0b92e02b9 Revert "remove old fail compatibility imports that are obsolete ?"
They are needed with ghc <8.4, not for fail but for <> I think.
Try cleaning up again another time.
This reverts commit 318ce7eb07.
2019-12-01 11:32:51 -08:00
Simon Michael
d922b6e798 ;doc: regen manuals 2019-12-01 10:12:29 -08:00
Simon Michael
6daebf60ea ;regen cabal files 2019-12-01 10:05:37 -08:00
Simon Michael
87d0491103 ;bump version to 1.16 2019-12-01 10:03:58 -08:00
Simon Michael
c90c0867c4 ;doc: changelogs
[ci skip]
2019-12-01 09:59:01 -08:00
Simon Michael
4b66bc2ed9 lib: disable doctest suite again till we can run it with cabal (#1139) 2019-12-01 09:13:18 -08:00
Simon Michael
318ce7eb07 remove old fail compatibility imports that are obsolete ? 2019-12-01 08:31:50 -08:00
Simon Michael
279e9624ed ;lib: clarify docs for setFullPrecision, setNaturalPrecision 2019-11-30 16:56:45 -08:00
Simon Michael
a081404bd7 ;doc: journal: rewrite commodity directive doc
[ci skip]
2019-11-30 08:34:13 -08:00
Simon Michael
359a118900 ;doc: draft changelog updates
[ci skip]
2019-11-29 07:57:54 -08:00
Simon Michael
caf8cdf0ca ;test: consistent singular naming for test suites and files 2019-11-29 06:35:29 -08:00
Simon Michael
c7574b8005 ;lib, cli: test suite cleanups, don't run hledger-lib tests twice 2019-11-29 06:11:25 -08:00
Simon Michael
2b2a0b3cf8 ;tests: use "test" alias for testCase everywhere
Easier to type and read, and a little clearer to my eyes;
"testCase" implies a single case, but it can contain many assertions.
2019-11-28 15:33:33 -08:00
Simon Michael
030b633cd6 ;fix build issues with old GHC versions 2019-11-28 15:22:12 -08:00
Simon Michael
ebedae01cf ;cabal: remove special cases for unsupported GHC 7 2019-11-28 14:59:18 -08:00
Simon Michael
08951ac3e8 ;cabal: add ghc 8.8 to tested-with
[ci skip]
2019-11-28 14:59:10 -08:00
Simon Michael
ca4fade4af ;tests: re-add hledger-lib's tests to the cabal file, as unittests 2019-11-28 14:45:10 -08:00
Simon Michael
5dac8af2ef ;ui: fix build error due to tests rewrite 2019-11-27 21:54:31 -08:00
Simon Michael
4faefcfab2 ;doc: regen manuals
[ci skip]
2019-11-27 13:18:08 -08:00
Simon Michael
b36f6df110 tests: port all unit tests to tasty, second pass (#1090)
Hledger.Util.Tests helpers have been cleaned up, and test names are
now shown.

Tests have been cleaned up a bit. Some groups of unnamed tests have
been collapsed into a single named test containing a sequence of
assertions. The test command counts named tests, not assertions, so
the reported unit test count has dropped from 199 to 188.
2019-11-27 13:17:34 -08:00
Simon Michael
13a3542464 tests: port all unit tests to tasty, first cut (#1090)
easytest is not actively maintained and requires an old version of
hedgehog which does not support base-compat 0.11 & ghc 8.8.

This is still using the old easytest helpers, and not displaying test
names properly.
2019-11-27 12:43:43 -08:00
Simon Michael
3f0892556d ;lib: clarify choiceopt doc 2019-11-23 13:03:26 -08:00
Simon Michael
0beca72275 ;csv: doc: one-posting txns can now be generated (#1111/#1133)
[ci skip]
2019-11-23 12:28:41 -08:00
Dmitry Astapov
aa051a05cf lib: support generation of (un)balanced virtual postings in csv reader 2019-11-23 10:28:10 -08:00
Simon Michael
332624f9fa ui: B and V keys toggle display of cost, value 2019-11-21 17:33:04 -08:00
Brian Wignall
f8269e21ab Fix some simple typos 2019-11-20 13:33:33 -08:00
Mykola Orliuk
2a36ac0d62 ;lib: fix doctest for RawOptions 2019-11-19 20:43:19 +01:00
Simon Michael
f0b2eed6c2 ;lib: clarify test suites recompilation workaround (#1125)
[ci skip]
2019-11-19 04:10:46 -08:00
Mykola Orliuk
f82ed83153 ;lib: re-enable easytests 2019-11-19 03:58:56 -08:00
Mykola Orliuk
097486a247 ;lib: re-enable doctests 2019-11-19 03:58:56 -08:00
Mykola Orliuk
5287fe671b ;all: hide RawOpts internals
This way we can ensure we always use only functions from RawOptions.
2019-11-18 17:38:39 -08:00
Mykola Orliuk
31ae3d3aaf ;lib: drop SystemString left from GHC pre 7.2
We are relying on base-4.9 or newer. Thus we don't compile anymore with
GHC version lower than 8.0.1.
2019-11-18 17:38:39 -08:00
Simon Michael
68b1cacf0f lib: refactor, prepare to drop showTransactionUnelided functionality
It seems we don't use it at all, and ony says it's not robust with
prices either.

Merge remote-tracking branch 'ony/chores/drop-elide-in-showTransaction'
2019-11-18 17:27:30 -08:00
Simon Michael
4cb2a03f7f ;lib: more docs for unifyMixedAmount
[ci skip]
2019-11-18 17:22:42 -08:00
Michael Kainer
79ca4a767e cli: Add -% to compound balance commands
This commit introduces the commandline argument -%/--percent to show
percentages of the column's total instead of the absolute amounts for
each account in reports. The signs of the values are preserved.

This option is especially useful for the balance and incomestatement
commands.

If there are multiple commodities involved in a report hledger bails
with an error message. This can be avoided by using --cost. Also note
that if one uses -% with the balance command the chances are high that
all numbers are 0. This is due to the fact that by default balance sums
up to zero. If one wants to use -% in a meaningful way with balance one
has to add a query.

In order to keep the implementation as simple as possible --tree has no
influence over how the percentages are calculated, i.e., the percentages
always represent the fraction of the columns total. If one wants to know
the percentages relative to a parent account, one has to use a query to
narrow down the accounts.
2019-11-18 17:10:59 -08:00
Mykola Orliuk
aca214b0ac lib: drop amount elision in showing last posting
This behavior is highly depends on journal. If we want to re-introduce
it we'd better re-consider how transaction entry can be "simplified".
I.e. besides dropping last amount we may drop prices that can be assumed
implicitly.
Note that there is no need to knit it into showTransaction since it
easily achievable with pre-processing (similar to implicit balances
etc).
2019-11-16 12:53:07 +01:00
Dmitry Astapov
c4d650e6ad lib: balance-style -> balance-type 2019-11-13 09:06:25 -08:00
Dmitry Astapov
39bc183340 lib: csv reader gets balance-style directive 2019-11-13 09:06:25 -08:00
Simon Michael
fb3c1a132c csv: fix parsing of whitespace on line after an if block (fix #1120) 2019-11-13 05:41:32 -08:00
Simon Michael
9b74471d02 ;doc: regen csv manuals
[ci skip]
2019-11-12 13:32:35 -08:00
Simon Michael
470b5aca7b ;csv: doc: fix typo
[ci skip]
2019-11-12 13:32:05 -08:00
Simon Michael
dbe8638ba2 ;csv: doc: remove currencyN/amount limitation (#1113)
[ci skip]
2019-11-12 13:24:59 -08:00
Dmitry Astapov
94f912e558 lib: better resolution of csv field aliases ("balance" vs "balance1", etc) 2019-11-12 12:20:09 -08:00
Simon Michael
205ff9d2d6 ;csv: doc: more cleanups, consistency
[ci skip]
2019-11-12 12:04:57 -08:00
Simon Michael
8b237cd4a0 ;csv: doc: reorder sections, greatly expand examples
too much ?

[ci skip]
2019-11-12 10:37:17 -08:00
Simon Michael
4eeb8f6264 ;csv: doc: more cleanups, note some limitations
[ci skip]
2019-11-11 18:29:36 -08:00
Simon Michael
01823d6329 ;csv: doc: testing/cleanup pass
[ci skip]
2019-11-11 18:10:09 -08:00
Simon Michael
d4cddc5402 ;csv: doc: another currency clarification, posting fields cleanup
[ci skip]
2019-11-10 18:33:50 -08:00
Simon Michael
a8f1f5da62 ;csv: doc: more notes about currency (#1095)
[ci skip]
2019-11-09 09:53:05 -08:00
Simon Michael
7200c2c4da ;doc: changelog update
[ci skip]
2019-11-07 19:28:52 -08:00
Simon Michael
c4d7cc198a csv: finalise and check journals generated from CSV (#1000)
Invalid transactions generated from CSV will now be rejected.
I updated some csv tests to avoid this, except for 21, which
probably needs more cleanup.
2019-11-07 18:58:12 -08:00
Simon Michael
5264a7ebc1 ;lib: refactor, split out finaliseJournal 2019-11-07 18:08:41 -08:00
Simon Michael
3f530f5b54 ;doc: update changelogs, including #1095
[ci skip]
2019-11-07 16:37:03 -08:00
Simon Michael
6e951962f9 ;csv: doc: cleanups
[ci skip]
2019-11-06 18:42:39 -08:00
Simon Michael
7ecc42f142 ;doc: regen manuals
[ci skip]
2019-11-06 13:15:17 -08:00
Simon Michael
d92351e21a csv: doc: clean up/expand manual after #1095
[ci skip]
2019-11-06 13:15:17 -08:00
Dmitry Astapov
fc001da1ef lib: expenses:unknown is a much better default account name 2019-11-05 21:16:42 +00:00
Dmitry Astapov
09f17f2b2b doc: mention the magic sauce 2019-11-05 21:16:42 +00:00
Dmitry Astapov
c66ccc5cee lib: do not try to balance transaction in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
95ec5715cc lib: better compatibility code in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
d62f84bec2 lib: csv reader does not generate postings if account="" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
a6d91da217 doc: remove "you need to create at least 1 posting" bit 2019-11-05 21:16:42 +00:00
Dmitry Astapov
44f01cbd94 docs: revert advise on account, postpone for now 2019-11-05 21:16:42 +00:00
Dmitry Astapov
91eb899b82 doc: advise on the default account selection 2019-11-05 21:16:42 +00:00
Dmitry Astapov
4b30a70c72 doc: posting1 is not magical in csv rules 2019-11-05 21:16:42 +00:00
Dmitry Astapov
8d24a40150 lib: csv parser fills out amounts on all postings, if possible 2019-11-05 21:16:42 +00:00
Dmitry Astapov
637741a755 lib: amount1 is no longer magical 2019-11-05 21:16:42 +00:00
Dmitry Astapov
977592e49c lib: typo fix, "expense:unknown" -> "expenses:unknown" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
3c7d5d466d lib, doc, test: csv parser gains "end" command for "if" block 2019-11-05 21:16:42 +00:00
Dmitry Astapov
3e5f0e8dd5 doc: clarify csv rules application order 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f92590f92c lib: allow zero postings in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
26a4f5e519 doc: less confusing example 2019-11-05 21:16:42 +00:00
Dmitry Astapov
cb6a5fc4a1 doc: proofreading csv parser docs 2019-11-05 21:16:42 +00:00
Dmitry Astapov
1ab8631264 lib: change default rules file text to mention "amount1" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
32cbe4c7b3 lib: better inference for unknown account names in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
b5d4918c16 lib: allow recursive interpolation of fields with underscores in names 2019-11-05 21:16:42 +00:00
Dmitry Astapov
38db7eb24d lib: implement skip end in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
b2ba1086b6 lib: fixed validation rules for minimul viable csv rules to include account1 etc 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f1ab107400 lib, doc: extended "skip" in "if" body to "skip N" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f877a7789f doc: further clarify posting generation 2019-11-05 21:16:42 +00:00
Dmitry Astapov
a2bd1ceb61 doc: close todos mentioned in csv parser description, more details 2019-11-05 21:16:42 +00:00
Dmitry Astapov
5d207ddd05 doc: describe changes to csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f108b52171 lib: fix for #1001 - empty field assignment consumes next line 2019-11-05 21:16:42 +00:00
Dmitry Astapov
5dac141a7e lib: implement conditional line skips in csv (fixes #1076) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f74df08e98 lib: fix accidental switch of income:unknown and expence:unknown in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
77fa81ea4d lib: fix error message formatting (header displayed twice) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
825b9ce5b3 lib: fixed amount vs amount1 conflict detection in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
24bba96ea2 lib: more robust multi-line joining in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
881422cd0f lib: fix recursive interpolation in CSV parser for fields with dashes 2019-11-05 21:16:42 +00:00
Dmitry Astapov
e4476dd2f1 lib: more robust "unknown" account assignment in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
28ca65b99a lib: more explicit conditions for using legacy csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
e4add6df83 lib: fix for multiline descriptions in csv (fixes #841, #416) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
9aab476d53 lib: csv parser supports up to 9 postings. Fixes #570, #627 2019-11-05 21:16:42 +00:00
Simon Michael
445adbe9d1 ;doc: regen manuals
[ci skip]
2019-10-23 12:30:27 -07:00
Simon Michael
312e772468 prices: style price amounts; always show full precision 2019-10-20 07:09:34 -07:00
Simon Michael
b598f30a8a ;lib: styleAmountExceptPrecision 2019-10-20 07:08:45 -07:00
Simon Michael
2e3b51c03f ;lib: journalConvertAmountsToCost -> journalToCost 2019-10-19 19:58:27 -07:00
Simon Michael
54e1caebf1 ;lib: refactor journalConvertAmountsToCost 2019-10-19 19:53:05 -07:00
Simon Michael
905149df86 ;lib: transaction valuation helpers 2019-10-19 19:41:21 -07:00
Simon Michael
de0a6b1e62 ;lib: Transaction: as Map -> as M 2019-10-19 19:17:35 -07:00
Mykola Orliuk
78146978f4 ;lib: store raw opts unquoted
It looks like we only need quote when we build query and in some
messages.

Fixes simonmichael/hledger#1079
2019-10-19 14:44:08 -07:00
Simon Michael
96e9b1595d ;csv: doc: clarify skip's behaviour
[ci skip]
2019-10-18 11:14:43 -07:00
Simon Michael
eff1b31c86 csv: allow csv records with varying lengths, padding with empties
Sometimes trailing empty fields are omitted entirely (including the
commas) in CSV records. (I see this in exported Google spreadsheets.)
Now we don't raise an error in this case, instead we automatically pad
any "short" records with empty fields. Not yet well tested.
2019-10-07 14:54:36 -10:00
Simon Michael
6dcddadd9f ;journal: in generated-transaction:/posting: tags, add a space before the value 2019-10-07 14:54:36 -10:00
Simon Michael
40c089dcfc ;doc: regen manuals
[ci skip]
2019-10-07 14:54:36 -10:00
Simon Michael
f1420cc770 ;doc: journal: oh, we can declare the null commodity
[ci skip]
2019-09-27 17:58:46 -10:00
Simon Michael
16973ce296 ;lib: fix journalInferCommodityStyles debug message 2019-09-27 18:51:37 -07:00
Simon Michael
58a313165c ;journal: infer amount styles more carefully, fix wrong output (#1091)
Certain journal entries could trigger a bug where we displayed amounts
with the same character for digit group mark and decimal mark. Now if
a comma or period digit group mark is detected, that forces the
decimal mark to be the other character.
2019-09-27 15:40:36 -10:00
Simon Michael
9967ead4c5 ;lib: let commodityStylesFromAmounts & co. return an error (#793, #1091)
And if they did, the stats command would now throw an error.

Changed:
journalApplyCommodityStyles
journalInferCommodityStyles
commodityStylesFromAmounts
2019-09-27 15:09:39 -10:00
Simon Michael
fd8c6935e8 ;doc: regen manuals
[ci skip]
2019-09-27 14:32:59 -10:00
Simon Michael
64f49a8c02 ;doc: journal: rewrite Amounts; switch to "digit group mark" term (#1091) 2019-09-27 14:25:32 -10:00
Simon Michael
b754abc36b ;lib: commodityStylesFromAmounts: simplify, disable #1091 test 2019-09-26 18:06:22 -10:00
Simon Michael
4884213a3e ;lib: commodityStylesFromAmounts: a failing unit test for #1091 2019-09-25 23:08:00 -10:00
Simon Michael
7ffe38677a ;lib: parseAndFinaliseJournal: note txns order issue (#1091) 2019-09-25 23:07:22 -10:00
Simon Michael
6037d701b6 ;lib: document RawNumber, AmbiguousNumber, DigitGrp (#1091) 2019-09-25 21:26:06 -10:00
Simon Michael
24ce2686f4 drop GHC 7.10/base 4.8 support, finally, due to MonadFail hassles
in JournalReader.hs. If you still need this, feel free to work on
those errors. But hopefully not, because dropping base 4.8 should
permit some code cleanups.
2019-09-14 03:45:37 -07:00
Simon Michael
977d4f009e lib, cli: disable hledger-lib test suites, hledger benchmark suite
by default. hledger-lib's doctests and easytests test suites (each ?)
require an additional slow rebuild of hledger-lib and are not worth
the time, energy and carbon. hledger's test suite runs those same
easytest tests (but not the doctests).
2019-09-14 03:45:37 -07:00
Simon Michael
180f4baedb ;lib: csv: note cause of #1087
[ci skip]
2019-09-14 03:45:37 -07:00
Simon Michael
f92b2fe6ef ;lib: csv: refactor: clarify, get rid of some IO/ExceptT
Rule parsing doesn't need IO (since we are doing expandIncludes as a
pre-parsing step).
2019-09-14 03:45:37 -07:00
Simon Michael
3c05662ce2 ;lib: csv: clarify confusing imports 2019-09-13 18:11:40 -07:00
Simon Michael
46caa1d4ef ;lib: csv: rename error-prone default rules 2019-09-13 17:51:14 -07:00
Simon Michael
a0deb88796 ;doc: regen manuals
[ci skip]
2019-09-13 11:00:03 -07:00
Simon Michael
f65fc47185 ;bump version to 1.15.99
[ci skip]
2019-09-13 08:43:33 -07:00
Simon Michael
e851bdf834 ;doc: changelogs
[ci skip]
2019-09-13 08:43:33 -07:00
Simon Michael
af21ae6eb6 ;doc: regen manuals
Wrapping and hyphenation has changed again, which I thought would
be more stable now with same tool versions on laptop and server.
Who knows.
2019-09-13 08:43:33 -07:00
Dmitry Astapov
568cb32677 lib: more runPeriodicTransaction tests (lifted from #1085 and spanIntervalIntersect) 2019-09-11 16:09:28 -07:00
Dmitry Astapov
e9d300bef3 lib: dont raise when there is neither budget nor transactions in the report period 2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf74972148 bin: improve debug output for budger report (show budget txns) 2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf4029a5ed lib: fix generation of periodic transactions with days/months/... repeat 2019-09-11 16:09:28 -07:00
Simon Michael
acd7010e5a ;doc: "curses-style interface" -> "terminal interface"
[ci skip]
2019-09-10 18:14:16 -07:00
Simon Michael
ef04907484 ;doc: fix broken manual links in manuals source
[ci skip]
2019-09-10 17:02:56 -07:00
Simon Michael
85d48a6b0e ;doc: regen manuals (on server)
Usually done on my laptop, but the toolchain on both machines should
produce the same result these days..

[ci skip]
2019-09-09 08:04:26 -07:00
Simon Michael
fb521e248b ;doc: journal: periodic transactions: more tweaks
[ci skip]
2019-09-09 08:02:22 -07:00
Simon Michael
94d3eb1cfb ;doc: journal: periodic transactions: more fixes, clarifications
[ci skip]
2019-09-09 07:45:09 -07:00
Simon Michael
901e5174d7 ;doc: journal: highlight some gotchas with periodic transactions
[ci skip]
2019-09-09 07:10:26 -07:00
Simon Michael
3b35e0afca ;site: manuals: fix many links that went to a prerelease manual
[ci skip]
2019-09-09 06:24:08 -07:00
Simon Michael
499e20c0b2 lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11
fail is moving out of Monad and into it's own MonadFail class.
This will be enforced in GHC 8.8 (I think).

base-compat/base-compat-batteries 0.11.0 have adapted to this,
and are approaching stackage nightly
(https://github.com/commercialhaskell/stackage/issues/4802).

hledger is now ready to build with base-compat-batteries 0.11.0, once
all of our deps do (eg aeson). We are still compatible with the older
0.10.x and GHC 7.10.3 as well.

For now we are using both fails:

- new fail (from Control.Monad.Fail), used in our parsers, imported
  via base-compat-batteries Control.Monad.Fail.Compat to work with
  older GHC versions.

- old fail (from GHC.Base, exported by Prelude, Control.Monad,
  Control.Monad.State.Strict, Prelude.Compat, ...), used in easytest's
  Test, since I couldn't find their existing fail implementation to update.

To reduce (my) confusion, these are imported carefully, consistently,
and qualified everywhere as Fail.fail and Prelude.fail, with clashing
re-exports suppressed, like so:

import Prelude hiding (fail)
import qualified Prelude (fail)
import Control.Monad.State.Strict hiding (fail)
import "base-compat-batteries" Prelude.Compat hiding (fail)
import qualified "base-compat-batteries" Control.Monad.Fail.Compat as Fail
2019-09-08 17:13:47 -07:00