-{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Rank2Types #-}
-----------------------------------------------------------------------------
-- |
-- Module : Hcompta.Lib.Leijen
-- * Rendering
SimpleDoc(..), renderPretty, renderCompact, renderOneLine,
displayB, displayT, displayIO, putDoc, hPutDoc,
- ToDoc(..)
+ ToDoc(..),
+ Leijen_of_forall_param(..)
) where
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 710
-import Prelude hiding ((<$>))
-#endif
-
-import Data.String (IsString (..))
-import System.IO (Handle, hPutChar, stdout)
-import System.Console.ANSI (Color(..), ColorIntensity(..), ConsoleLayer(..),
- Underlining(..), ConsoleIntensity(..),
- SGR(..), hSetSGR, setSGRCode)
-
-import Data.Int (Int64)
-import Data.Maybe (catMaybes)
-import Data.Monoid ((<>))
-import qualified Data.Foldable (Foldable(..))
-import qualified Data.Text (Text)
-import Data.Text.Lazy (Text)
-import qualified Data.Text.Lazy as T
+import Data.Char
+import qualified Data.Foldable (Foldable(..))
+import Data.Int (Int64)
+import Data.Bool hiding (bool)
+import Data.Functor (Functor(..))
+import Data.Foldable (foldr1)
+import Data.Maybe (Maybe(..), catMaybes)
+import Data.Monoid (Monoid(..), (<>))
+import Data.String (IsString (..))
+import qualified Data.Text (Text)
+import Data.Text.Lazy (Text)
+import qualified Data.Text.Lazy as T
import Data.Text.Lazy.Builder (Builder)
import qualified Data.Text.Lazy.Builder as B
-import qualified Data.Text.Lazy.IO as T
+import qualified Data.Text.Lazy.IO as T
+import Data.Tuple (uncurry)
+import Prelude ( Eq(..), Show(..), (/=), zipWith, repeat, (.), Int
+ , Float, Double, Rational, Integer, id
+ , ($), (<), (>), (-), (<=), (>=), fromIntegral, min
+ , max, round, Num(..), seq, IO, Monad(..) )
+import System.IO (Handle, hPutChar, stdout)
+import System.Console.ANSI ( Color(..), ColorIntensity(..)
+ , ConsoleIntensity(..), ConsoleLayer(..)
+ , hSetSGR, setSGRCode, SGR(..), Underlining(..) )
{-# ANN module "HLint: ignore Eta reduce" #-}
pretty :: a -> Doc
prettyList :: [a] -> Doc
- prettyList = list . map pretty
+ prettyList = list . fmap pretty
instance Pretty a => Pretty [a] where
pretty = prettyList
class ToDoc m a where
toDoc :: m -> a -> Doc
-instance ToDoc m Doc where
- toDoc _m = id
+instance ToDoc () Doc where
+ toDoc () = id
+
+-- ** Class 'Leijen_of_forall_param'
+
+-- | A class useful when using a context of kind '*' is not wanted
+-- for example in a class instance constraint
+-- to keep the instance decidable (i.e. avoid UndecidableInstances).
+class Leijen_of_forall_param f x where
+ leijen_of_forall_param :: forall m. f m -> x -> Doc
-- LocalWords: PPrint combinators Wadler Wadler's encloseSep