show-prettyprint: Robust prettyprinter for output of auto-generated Show instances

[ bsd3, library, text, user-interfaces ] [ Propose Tags ]

See README.md


[Skip to Readme]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.2, 0.1.2.1, 0.2, 0.2.0.1, 0.2.0.2, 0.2.1, 0.2.2, 0.2.3, 0.3, 0.3.0.1
Dependencies ansi-wl-pprint, base (>=4.8 && <5), trifecta (>=1.6 && <1.8) [details]
License BSD-3-Clause
Copyright David Luposchainsky, 2016
Author David Luposchainsky <dluposchainsky (λ) google>
Maintainer David Luposchainsky <dluposchainsky (λ) google>
Revised Revision 1 made by phadej at 2020-04-14T12:52:36Z
Category User Interfaces, Text
Home page https://github.com/quchen/show-prettyprint#readme
Source repo head: git clone https://github.com/quchen/show-prettyprint
Uploaded by quchen at 2016-11-14T16:13:17Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 7448 total (34 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for show-prettyprint-0.1.2

[back to package description]

Prettyprint Show output

Output of nested data structures by Show instances is often very hard to read. This package offers a simple function to insert line breaks and indentation into that output so that the semantics are unchanged, but makes it much easier to read.

The package does not rely on a parser for actual Haskell; instead, it merely reacts on parentheses, commas and the like. This makes it fairly robust even in the face of invalid Show instances, that may not produce valid Haskell code.

For example, consider this nested data structure:

nestedExample = fromList
    [ ("hello", Left  (Pair True ()))
    , ("world", Right (Record { r1 = ('c', -1.2e34), r2 = 123 }))
    , ("!"    , Left  (Pair False ())) ]

Applying show to it results in the fairly dense representation

fromList [("!",Left (Pair False ())),("hello",Left (Pair True ())),("world",Right (Record {r1 = ('c',-1.2e34), r2 = 123}))]

With the functions defined in this module, we can make this output a bit more readable,

fromList [("!"
          ,Left (Pair False ()))
         ,("hello",Left (Pair True ()))
         ,("world"
          ,Right (Record {r1 = ('c'
                               ,-1.2e34)
                         ,r2 = 123}))]