pretty-compact 3.0 → 3.1
raw patch · 3 files changed
+19/−21 lines, 3 filesdep ~containersdep ~semigroupssetup-changed
Dependency ranges changed: containers, semigroups
Files
- Setup.hs +0/−2
- Text/PrettyPrint/Compact/Core.hs +9/−5
- pretty-compact.cabal +10/−14
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
Text/PrettyPrint/Compact/Core.hs view
@@ -50,14 +50,17 @@ deriving (Eq,Ord,Show,Functor,Foldable,Traversable) instance Monoid a => Semigroup (L a) where- L (viewr -> xs :> x) <> L (viewl -> y :< ys) = L (xs <> singleton (x <> y) <> fmap (indent <>) ys)- where n = asLength x- indent = mkAS (P.replicate n ' ')+ L (viewr -> xs :> x) <> L (viewl -> y :< ys) =+ L (xs <> singleton (x <> y) <> indent ys) where++ n = asLength x+ pad = mkAS (P.replicate n ' ')+ indent = if n == 0 then id else fmap (pad <>)+ L _ <> L _ = error "<> @L: invariant violated, Seq is empty" instance Monoid a => Monoid (L a) where mempty = L (singleton (mkAS ""))- mappend = (<>) instance Layout L where text = L . singleton . mkAS@@ -156,6 +159,7 @@ -- list sorted by lexicographic order for the first component -- function argument is the page width newtype ODoc a = MkDoc {fromDoc :: Int -> [(Pair M L a)]}+ deriving Functor instance Monoid a => Semigroup (ODoc a) where MkDoc xs <> MkDoc ys = MkDoc $ \w -> bestsOn frst [ discardInvalid w [x <> y | y <- ys w] | x <- xs w]@@ -217,12 +221,12 @@ in bestsOn frst [horizontal,vertical] data Pair f g a = (:-:) {frst :: f a, scnd :: g a}+ deriving (Functor,Foldable,Traversable) instance (Semigroup (f a), Semigroup (g a)) => Semigroup (Pair f g a) where (x :-: y) <> (x' :-: y') = (x <> x') :-: (y <> y') instance (Monoid (f a), Monoid (g a)) => Monoid (Pair f g a) where mempty = mempty :-: mempty- mappend (x :-: y)(x' :-: y') = (x `mappend` x') :-: (y `mappend` y') instance (Layout a, Layout b) => Layout (Pair a b) where text s = text s :-: text s
pretty-compact.cabal view
@@ -1,5 +1,6 @@+Cabal-Version: 3.4 name: pretty-compact-version: 3.0+version: 3.1 synopsis: Pretty-printing library description: This package contains a pretty-printing library, a set of API's@@ -10,19 +11,11 @@ This library produces more compact outputs than both Wadler-Leijen or Hughes-PJ algorithms, at the expense of computational ressources. The core API is based on Hughes-PJ, but some combinators of the Leijen API are implemented as well.-license: GPL+license: LGPL-3.0-only license-file: LICENSE category: Text maintainer: Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com> build-type: Simple-Cabal-Version: >= 1.8-tested-with:- GHC == 7.4.2,- GHC == 7.6.3,- GHC == 7.8.4,- GHC == 7.10.3,- GHC == 8.0.2,- GHC == 8.2.1 source-repository head type: git@@ -34,12 +27,15 @@ Text.PrettyPrint.Compact Text.PrettyPrint.Compact.Core build-depends:- base >= 3 && < 5,- base-compat >= 0.9.3 && <0.10,- containers+ base >= 4.6 && < 5,+ base-compat >= 0.9.3 && <0.12,+ containers >= 0 && <666 if !impl(ghc >= 8.0)- build-depends: semigroups+ build-depends: semigroups >= 0 && <666++ other-extensions:+ LambdaCase benchmark pretty-comparison type: exitcode-stdio-1.0