[project @ 2003-08-04 18:07:49 by panne]
[haskell-directory.git] / GHC / Read.lhs
index 17a9d81..b67e83b 100644 (file)
@@ -49,8 +49,8 @@ import qualified Text.ParserCombinators.ReadP as P
 
 import Text.ParserCombinators.ReadP
   ( ReadP
+  , ReadS
   , readP_to_S
-  , readS_to_P
   )
 
 import qualified Text.Read.Lex as L
@@ -90,25 +90,20 @@ readParen b g   =  if b then mandatory else optional
 
 %*********************************************************
 %*                                                     *
-\subsection{The @Read@ class and @ReadS@ type}
+\subsection{The @Read@ class}
 %*                                                     *
 %*********************************************************
 
 \begin{code}
 ------------------------------------------------------------------------
--- ReadS
-
--- | A parser for a type @a@, represented as a function that takes a
--- 'String' and returns a list of possible parses @(a,'String')@ pairs.
-type ReadS a = String -> [(a,String)]
-
-------------------------------------------------------------------------
 -- class Read
 
 class Read a where
   readsPrec    :: Int -> ReadS a
   readList     :: ReadS [a]
+  -- | Proposed replacement for 'readsPrec' using new-style parsers (GHC only).
   readPrec     :: ReadPrec a
+  -- | Proposed replacement for 'readList' using new-style parsers (GHC only).
   readListPrec :: ReadPrec [a]
   
   -- default definitions
@@ -118,13 +113,13 @@ class Read a where
   readListPrec = readS_to_Prec (\_ -> readList)
 
 readListDefault :: Read a => ReadS [a]
--- ^ Use this to define the 'readList' method, if you
---   don't want a special case
+-- ^ Use this to define the 'readList' method, if you don't want a special
+--   case (GHC only; for other systems the default suffices).
 readListDefault = readPrec_to_S readListPrec 0
 
 readListPrecDefault :: Read a => ReadPrec [a]
 -- ^ Use this to define the 'readListPrec' method, if you
---   don't want a special case
+--   don't want a special case (GHC only).
 readListPrecDefault = list readPrec
 
 ------------------------------------------------------------------------
@@ -158,13 +153,13 @@ lex :: ReadS String               -- As defined by H98
 lex s  = readP_to_S L.hsLex s
 
 lexLitChar :: ReadS String     -- As defined by H98
-lexLitChar = readP_to_S (do { P.skipSpaces ;
-                             (s, L.Char _) <- P.gather L.lex ;
+lexLitChar = readP_to_S (do { (s, _) <- P.gather L.lexChar ;
                              return s })
+       -- There was a skipSpaces before the P.gather L.lexChar,
+       -- but that seems inconsistent with readLitChar
 
 readLitChar :: ReadS Char      -- As defined by H98
-readLitChar = readP_to_S (do { L.Char c <- L.lex ;
-                              return c })
+readLitChar = readP_to_S L.lexChar
 
 lexDigits :: ReadS String
 lexDigits = readP_to_S (P.munch1 isDigit)