Avoid using deprecated flags
[ghc-base.git] / Text / Read.hs
index c2fc39b..172a4c2 100644 (file)
@@ -1,4 +1,4 @@
-{-# OPTIONS -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -XNoImplicitPrelude #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Read
@@ -7,40 +7,64 @@
 -- 
 -- Maintainer  :  libraries@haskell.org
 -- Stability   :  provisional
--- Portability :  portable
+-- Portability :  non-portable (uses Text.ParserCombinators.ReadP)
+--
+-- Converting strings to values.
 --
 -- The "Text.Read" library is the canonical library to import for
--- 'Read'-class facilities.  It offers an extended and much improved
--- 'Read' class, which constitutes a proposed alternative to the 
--- Haskell98 'Read'.  In particular, writing parsers is easier, and
+-- 'Read'-class facilities.  For GHC only, it offers an extended and much
+-- improved 'Read' class, which constitutes a proposed alternative to the 
+-- Haskell 98 'Read'.  In particular, writing parsers is easier, and
 -- the parsers are much more efficient.
 --
 -----------------------------------------------------------------------------
 
 module Text.Read (
    -- * The 'Read' class
-   Read(..),           -- The Read class
-   ReadS,              -- String -> Maybe (a,String)
+   Read(..),            -- The Read class
+   ReadS,               -- String -> Maybe (a,String)
 
    -- * Haskell 98 functions
-   reads,              -- :: (Read a) => ReadS a
-   read,               -- :: (Read a) => String -> a
-   readParen,          -- :: Bool -> ReadS a -> ReadS a
-   lex,                        -- :: ReadS String
+   reads,               -- :: (Read a) => ReadS a
+   read,                -- :: (Read a) => String -> a
+   readParen,           -- :: Bool -> ReadS a -> ReadS a
+   lex,                 -- :: ReadS String
 
-#ifdef __GLASGOW_HASKELL__
+#if defined(__GLASGOW_HASKELL__) || defined(__HUGS__)
    -- * New parsing functions
    module Text.ParserCombinators.ReadPrec,
-   L.Lexeme(..),       
-   lexP,               -- :: ReadPrec Lexeme
-   readListDefault,    -- :: Read a => ReadS [a]
-   readListPrecDefault,        -- :: Read a => ReadPrec [a]
+   L.Lexeme(..),
+   lexP,                -- :: ReadPrec Lexeme
+   parens,              -- :: ReadPrec a -> ReadPrec a
+#endif
+#ifdef __GLASGOW_HASKELL__
+   readListDefault,     -- :: Read a => ReadS [a]
+   readListPrecDefault, -- :: Read a => ReadPrec [a]
 #endif
 
  ) where
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Read
+#endif
+#if defined(__GLASGOW_HASKELL__) || defined(__HUGS__)
 import Text.ParserCombinators.ReadPrec
 import qualified Text.Read.Lex as L
-#endif   
+#endif
+
+#ifdef __HUGS__
+-- copied from GHC.Read
+
+lexP :: ReadPrec L.Lexeme
+lexP = lift L.lex
+
+parens :: ReadPrec a -> ReadPrec a
+parens p = optional
+ where
+  optional  = p +++ mandatory
+  mandatory = do
+    L.Punc "(" <- lexP
+    x          <- reset optional
+    L.Punc ")" <- lexP
+    return x
+#endif