<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >Text.Read</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_Text-Read.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >base-4.2.0.2: Basic libraries</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >Text.Read</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >non-portable (uses Text.ParserCombinators.ReadP)</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >provisional</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >libraries@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >The <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > class </A ></DT ><DT ><A HREF="#2" >Haskell 98 functions </A ></DT ><DT ><A HREF="#3" >New parsing functions </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P >Converting strings to values. </P ><P >The <A HREF="Text-Read.html" >Text.Read</A > library is the canonical library to import for <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT >-class facilities. For GHC only, it offers an extended and much improved <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > class, which constitutes a proposed alternative to the Haskell 98 <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT >. In particular, writing parsers is easier, and the parsers are much more efficient. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ARead" >Read</A > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadsPrec" >readsPrec</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadList" >readList</A > :: <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadPrec" >readPrec</A > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadListPrec" >readListPrec</A > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > [a]</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AReadS" >ReadS</A > a = <A HREF="Data-Char.html#t%3AString" >String</A > -> [(a, <A HREF="Data-Char.html#t%3AString" >String</A >)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Areads" >reads</A > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aread" >read</A > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Data-Char.html#t%3AString" >String</A > -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadParen" >readParen</A > :: <A HREF="Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a -> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alex" >lex</A > :: <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" >module <A HREF="Text-ParserCombinators-ReadPrec.html" >Text.ParserCombinators.ReadPrec</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ALexeme" >Lexeme</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AChar" >Char</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AString" >String</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3APunc" >Punc</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AIdent" >Ident</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ASymbol" >Symbol</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AInt" >Int</A > <A HREF="Prelude.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARat" >Rat</A > <A HREF="Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AEOF" >EOF</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlexP" >lexP</A > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aparens" >parens</A > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a -> <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadListDefault" >readListDefault</A > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadListPrecDefault" >readListPrecDefault</A > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > [a]</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >The <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > class </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Read" ><A NAME="t%3ARead" ></A ></A ><B >Read</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Parsing of <TT ><A HREF="Data-Char.html#t%3AString" >String</A ></TT >s, producing values. </P ><P >Minimal complete definition: <TT ><A HREF="Text-Read.html#v%3AreadsPrec" >readsPrec</A ></TT > (or, for GHC only, <TT ><A HREF="Text-Read.html#v%3AreadPrec" >readPrec</A ></TT >) </P ><P >Derived instances of <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > make the following assumptions, which derived instances of Text.Show.Show obey: </P ><UL ><LI > If the constructor is defined to be an infix operator, then the derived <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > instance will parse only infix applications of the constructor (not the prefix form). </LI ><LI > Associativity is not used to reduce the occurrence of parentheses, although precedence may be. </LI ><LI > If the constructor is defined using record syntax, the derived <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration. </LI ><LI > The derived <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed. </LI ></UL ><P >For example, given the declarations </P ><PRE > infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a </PRE ><P >the derived instance of <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > in Haskell 98 is equivalent to </P ><PRE > instance (Read a) => Read (Tree a) where readsPrec d r = readParen (d > app_prec) (\r -> [(Leaf m,t) | ("Leaf",s) <- lex r, (m,t) <- readsPrec (app_prec+1) s]) r ++ readParen (d > up_prec) (\r -> [(u:^:v,w) | (u,s) <- readsPrec (up_prec+1) r, (":^:",t) <- lex s, (v,w) <- readsPrec (up_prec+1) t]) r where app_prec = 10 up_prec = 5 </PRE ><P >Note that right-associativity of <TT >:^:</TT > is unused. </P ><P >The derived instance in GHC is equivalent to </P ><PRE > instance (Read a) => Read (Tree a) where readPrec = parens $ (prec app_prec $ do Ident "Leaf" <- lexP m <- step readPrec return (Leaf m)) +++ (prec up_prec $ do u <- step readPrec Symbol ":^:" <- lexP v <- step readPrec return (u :^: v)) where app_prec = 10 up_prec = 5 readListPrec = readListPrecDefault </PRE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" >Methods</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A NAME="v:readsPrec" ><A NAME="v%3AreadsPrec" ></A ></A ><B >readsPrec</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >the operator precedence of the enclosing context (a number from <TT >0</TT > to <TT >11</TT >). Function application has precedence <TT >10</TT >. </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >attempts to parse a value from the front of the string, returning a list of (parsed value, remaining string) pairs. If there is no successful parse, the returned list is empty. </P ><P >Derived instances of <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > and Text.Show.Show satisfy the following: </P ><UL ><LI > <TT >(x,"")</TT > is an element of <TT >(<TT ><A HREF="Text-Read.html#v%3AreadsPrec" >readsPrec</A ></TT > d (Text.Show.showsPrec d x ""))</TT >. </LI ></UL ><P >That is, <TT ><A HREF="Text-Read.html#v%3AreadsPrec" >readsPrec</A ></TT > parses the string produced by Text.Show.showsPrec, and delivers the value that Text.Show.showsPrec started with. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readList" ><A NAME="v%3AreadList" ></A ></A ><B >readList</B > :: <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ><TR ><TD CLASS="doc" >The method <TT ><A HREF="Text-Read.html#v%3AreadList" >readList</A ></TT > is provided to allow the programmer to give a specialised way of parsing lists of values. For example, this is used by the predefined <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > instance of the <TT ><A HREF="Data-Char.html#t%3AChar" >Char</A ></TT > type, where values of type <TT ><A HREF="Data-Char.html#t%3AString" >String</A ></TT > should be are expected to use double quotes, rather than square brackets. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readPrec" ><A NAME="v%3AreadPrec" ></A ></A ><B >readPrec</B > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a</TD ></TR ><TR ><TD CLASS="doc" >Proposed replacement for <TT ><A HREF="Text-Read.html#v%3AreadsPrec" >readsPrec</A ></TT > using new-style parsers (GHC only). </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readListPrec" ><A NAME="v%3AreadListPrec" ></A ></A ><B >readListPrec</B > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > [a]</TD ></TR ><TR ><TD CLASS="doc" >Proposed replacement for <TT ><A HREF="Text-Read.html#v%3AreadList" >readList</A ></TT > using new-style parsers (GHC only). The default definition uses <TT ><A HREF="Text-Read.html#v%3AreadList" >readList</A ></TT >. Instances that define <TT ><A HREF="Text-Read.html#v%3AreadPrec" >readPrec</A ></TT > should also define <TT ><A HREF="Text-Read.html#v%3AreadListPrec" >readListPrec</A ></TT > as <TT ><A HREF="Text-Read.html#v%3AreadListPrecDefault" >readListPrecDefault</A ></TT >. </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Read')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Read" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Prelude.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Prelude.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Prelude.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > ()</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-IO-Device.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-IO-Handle.html#t%3ABufferMode" >BufferMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > [a]</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AIntegral" >Integral</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > a) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > ([::] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ALast" >Last</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3AFirst" >First</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="Data-Either.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Data-Ix.html#t%3AIx" >Ix</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (Array a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j, <A HREF="Text-Read.html#t%3ARead" >Read</A > k) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j, k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j, <A HREF="Text-Read.html#t%3ARead" >Read</A > k, <A HREF="Text-Read.html#t%3ARead" >Read</A > l) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j, k, l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j, <A HREF="Text-Read.html#t%3ARead" >Read</A > k, <A HREF="Text-Read.html#t%3ARead" >Read</A > l, <A HREF="Text-Read.html#t%3ARead" >Read</A > m) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j, k, l, m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j, <A HREF="Text-Read.html#t%3ARead" >Read</A > k, <A HREF="Text-Read.html#t%3ARead" >Read</A > l, <A HREF="Text-Read.html#t%3ARead" >Read</A > m, <A HREF="Text-Read.html#t%3ARead" >Read</A > n) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j, k, l, m, n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b, <A HREF="Text-Read.html#t%3ARead" >Read</A > c, <A HREF="Text-Read.html#t%3ARead" >Read</A > d, <A HREF="Text-Read.html#t%3ARead" >Read</A > e, <A HREF="Text-Read.html#t%3ARead" >Read</A > f, <A HREF="Text-Read.html#t%3ARead" >Read</A > g, <A HREF="Text-Read.html#t%3ARead" >Read</A > h, <A HREF="Text-Read.html#t%3ARead" >Read</A > i, <A HREF="Text-Read.html#t%3ARead" >Read</A > j, <A HREF="Text-Read.html#t%3ARead" >Read</A > k, <A HREF="Text-Read.html#t%3ARead" >Read</A > l, <A HREF="Text-Read.html#t%3ARead" >Read</A > m, <A HREF="Text-Read.html#t%3ARead" >Read</A > n, <A HREF="Text-Read.html#t%3ARead" >Read</A > o) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:ReadS" ><A NAME="t%3AReadS" ></A ></A ><B >ReadS</B > a = <A HREF="Data-Char.html#t%3AString" >String</A > -> [(a, <A HREF="Data-Char.html#t%3AString" >String</A >)]</TD ></TR ><TR ><TD CLASS="doc" ><P >A parser for a type <TT >a</TT >, represented as a function that takes a <TT ><A HREF="Data-Char.html#t%3AString" >String</A ></TT > and returns a list of possible parses as <TT >(a,<TT ><A HREF="Data-Char.html#t%3AString" >String</A ></TT >)</TT > pairs. </P ><P >Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf <TT ><A HREF="Text-ParserCombinators-ReadP.html#t%3AReadP" >ReadP</A ></TT >). </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Haskell 98 functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:reads" ><A NAME="v%3Areads" ></A ></A ><B >reads</B > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="doc" >equivalent to <TT ><A HREF="Text-Read.html#v%3AreadsPrec" >readsPrec</A ></TT > with a precedence of 0. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:read" ><A NAME="v%3Aread" ></A ></A ><B >read</B > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Data-Char.html#t%3AString" >String</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Text-Read.html#v%3Aread" >read</A ></TT > function reads input from a string, which must be completely consumed by the input process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readParen" ><A NAME="v%3AreadParen" ></A ></A ><B >readParen</B > :: <A HREF="Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a -> <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><TT ><A HREF="Text-Read.html#v%3AreadParen" >readParen</A ></TT > <TT ><A HREF="Data-Bool.html#v%3ATrue" >True</A ></TT > p</TT > parses what <TT >p</TT > parses, but surrounded with parentheses. </P ><P ><TT ><TT ><A HREF="Text-Read.html#v%3AreadParen" >readParen</A ></TT > <TT ><A HREF="Data-Bool.html#v%3AFalse" >False</A ></TT > p</TT > parses what <TT >p</TT > parses, but optionally surrounded with parentheses. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lex" ><A NAME="v%3Alex" ></A ></A ><B >lex</B > :: <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The <TT ><A HREF="Text-Read.html#v%3Alex" >lex</A ></TT > function reads a single lexeme from the input, discarding initial white space, and returning the characters that constitute the lexeme. If the input string contains only white space, <TT ><A HREF="Text-Read.html#v%3Alex" >lex</A ></TT > returns a single successful `lexeme' consisting of the empty string. (Thus <TT ><TT ><A HREF="Text-Read.html#v%3Alex" >lex</A ></TT > "" = [("","")]</TT >.) If there is no legal lexeme at the beginning of the input string, <TT ><A HREF="Text-Read.html#v%3Alex" >lex</A ></TT > fails (i.e. returns <TT >[]</TT >). </P ><P >This lexer is not completely faithful to the Haskell lexical syntax in the following respects: </P ><UL ><LI > Qualified names are not handled properly </LI ><LI > Octal and hexadecimal numerics are not recognized as a single token </LI ><LI > Comments are not treated properly </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >New parsing functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" >module <A HREF="Text-ParserCombinators-ReadPrec.html" >Text.ParserCombinators.ReadPrec</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Lexeme" ><A NAME="t%3ALexeme" ></A ></A ><B >Lexeme</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Haskell lexemes. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Char" ><A NAME="v%3AChar" ></A ></A ><B >Char</B > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ><TD CLASS="rdoc" >Character literal </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:String" ><A NAME="v%3AString" ></A ></A ><B >String</B > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >String literal, with escapes interpreted </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Punc" ><A NAME="v%3APunc" ></A ></A ><B >Punc</B > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Punctuation or reserved symbol, e.g. <TT >(</TT >, <TT >::</TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Ident" ><A NAME="v%3AIdent" ></A ></A ><B >Ident</B > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Haskell identifier, e.g. <TT >foo</TT >, <TT >Baz</TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Symbol" ><A NAME="v%3ASymbol" ></A ></A ><B >Symbol</B > <A HREF="Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Haskell symbol, e.g. <TT >>></TT >, <TT >:%</TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Int" ><A NAME="v%3AInt" ></A ></A ><B >Int</B > <A HREF="Prelude.html#t%3AInteger" >Integer</A ></TD ><TD CLASS="rdoc" >Integer literal </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Rat" ><A NAME="v%3ARat" ></A ></A ><B >Rat</B > <A HREF="Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="rdoc" >Floating point literal </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:EOF" ><A NAME="v%3AEOF" ></A ></A ><B >EOF</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Lexeme')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Lexeme" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lexP" ><A NAME="v%3AlexP" ></A ></A ><B >lexP</B > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > <A HREF="Text-Read.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="doc" >Parse a single lexeme </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:parens" ><A NAME="v%3Aparens" ></A ></A ><B >parens</B > :: <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a -> <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > a</TD ></TR ><TR ><TD CLASS="doc" ><TT >(parens p)</TT > parses "P", "(P0)", "((P0))", etc, where <TT >p</TT > parses "P" in the current precedence context and parses "P0" in precedence context zero </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readListDefault" ><A NAME="v%3AreadListDefault" ></A ></A ><B >readListDefault</B > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-Read.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ><TR ><TD CLASS="doc" >A possible replacement definition for the <TT ><A HREF="Text-Read.html#v%3AreadList" >readList</A ></TT > method (GHC only). This is only needed for GHC, and even then only for <TT ><A HREF="Text-Read.html#t%3ARead" >Read</A ></TT > instances where <TT ><A HREF="Text-Read.html#v%3AreadListPrec" >readListPrec</A ></TT > isn't defined as <TT ><A HREF="Text-Read.html#v%3AreadListPrecDefault" >readListPrecDefault</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readListPrecDefault" ><A NAME="v%3AreadListPrecDefault" ></A ></A ><B >readListPrecDefault</B > :: <A HREF="Text-Read.html#t%3ARead" >Read</A > a => <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A > [a]</TD ></TR ><TR ><TD CLASS="doc" >A possible replacement definition for the <TT ><A HREF="Text-Read.html#v%3AreadListPrec" >readListPrec</A ></TT > method, defined using <TT ><A HREF="Text-Read.html#v%3AreadPrec" >readPrec</A ></TT > (GHC only). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >