Ajout : .gitignore
[comptalang.git] / lib / Hcompta / Lib / Leijen.hs
index 85b1a835757ae28a8bbc985f5fb155afa356112c..0ebfe431f0f84272704596b7e0681d8de8bff6d4 100644 (file)
@@ -1,6 +1,6 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Rank2Types #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Hcompta.Lib.Leijen
@@ -137,29 +137,34 @@ 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" #-}
 
 
@@ -589,7 +594,7 @@ class Pretty a where
   pretty :: a -> Doc
 
   prettyList :: [a] -> Doc
-  prettyList = list . map pretty
+  prettyList = list . fmap pretty
 
 instance Pretty a => Pretty [a] where
   pretty = prettyList
@@ -1497,7 +1502,15 @@ intercalate separator f =
 
 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