Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > db7a4a658d190b3e658423135710c498 > files > 672

ghc-darcs-devel-2.8.3-1.fc18.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Darcs.Patch.ReadMonads</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Darcs-Patch-ReadMonads.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Darcs-Patch-ReadMonads.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">darcs-2.8.3: a distributed, interactive, smart revision control system</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">Darcs.Patch.ReadMonads</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module defines our parsing monad.  In the past there have been lazy
 and strict parsers in this module.  Currently we have only the strict
 variant and it is used for parsing patch files.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Applicative">Applicative</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m) =&gt; <a href="#t:ParserM">ParserM</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:parse">parse</a> ::  m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a, <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>)</li></ul></li><li class="src short"><a href="#v:take">take</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Int.html#t:Int">Int</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:parseStrictly">parseStrictly</a> ::  SM a -&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a, <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>)</li><li class="src short"><a href="#v:char">char</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:int">int</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:option">option</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; a -&gt; f a -&gt; f a</li><li class="src short"><a href="#v:choice">choice</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; [f a] -&gt; f a</li><li class="src short"><a href="#v:skipSpace">skipSpace</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:skipWhile">skipWhile</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:string">string</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:lexChar">lexChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:lexString">lexString</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:lexEof">lexEof</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:takeTillChar">takeTillChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:myLex-39-">myLex'</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:anyChar">anyChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a></li><li class="src short"><a href="#v:endOfInput">endOfInput</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:takeTill">takeTill</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:checkConsumes">checkConsumes</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m a -&gt; m a</li><li class="src short"><a href="#v:linesStartingWith">linesStartingWith</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m [<a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>]</li><li class="src short"><a href="#v:linesStartingWithEndingWith">linesStartingWithEndingWith</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m [<a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>]</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Applicative">Applicative</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m) =&gt; <a name="t:ParserM" class="def">ParserM</a> m  <span class="keyword">where</span><a href="src/Darcs-Patch-ReadMonads.html#ParserM" class="link">Source</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:parse" class="def">parse</a> ::  m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a, <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>)<a href="src/Darcs-Patch-ReadMonads.html#parse" class="link">Source</a></p><div class="doc"><p>Run the parser
</p></div></div><div class="subs instances"><p id="control.i:ParserM" class="caption collapser" onclick="toggleSection('i:ParserM')">Instances</p><div id="section.i:ParserM" class="show"><table><tr><td class="src"><a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> SM</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:take" class="def">take</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Int.html#t:Int">Int</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Darcs-Patch-ReadMonads.html#take" class="link">Source</a></p><div class="doc"><p>Takes exactly <code>n</code> bytes, or fails.
</p></div></div><div class="top"><p class="src"><a name="v:parseStrictly" class="def">parseStrictly</a> ::  SM a -&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a, <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>)<a href="src/Darcs-Patch-ReadMonads.html#parseStrictly" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-ReadMonads.html#v:parseStrictly">parseStrictly</a></code> applies the parser functions to a string
 and checks that each parser produced a result as it goes.
 The strictness is in the <code><a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a></code> instance for <code>SM</code>.
</p></div></div><div class="top"><p class="src"><a name="v:char" class="def">char</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#char" class="link">Source</a></p><div class="doc"><p>Accepts only the specified character.  Consumes a character, if
 available.
</p></div></div><div class="top"><p class="src"><a name="v:int" class="def">int</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Int.html#t:Int">Int</a><a href="src/Darcs-Patch-ReadMonads.html#int" class="link">Source</a></p><div class="doc"><p>Parse an integer and return it.  Skips leading whitespaces and
 | uses the efficient ByteString readInt.
</p></div></div><div class="top"><p class="src"><a name="v:option" class="def">option</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; a -&gt; f a -&gt; f a<a href="src/Darcs-Patch-ReadMonads.html#option" class="link">Source</a></p><div class="doc"><p>If <code>p</code> fails it returns <code>x</code>, otherwise it returns the result of <code>p</code>.
</p></div></div><div class="top"><p class="src"><a name="v:choice" class="def">choice</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; [f a] -&gt; f a<a href="src/Darcs-Patch-ReadMonads.html#choice" class="link">Source</a></p><div class="doc"><p>Attempts each option until one succeeds.
</p></div></div><div class="top"><p class="src"><a name="v:skipSpace" class="def">skipSpace</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#skipSpace" class="link">Source</a></p><div class="doc"><p>Discards spaces until a non-space character is encountered.
 Always succeeds.
</p></div></div><div class="top"><p class="src"><a name="v:skipWhile" class="def">skipWhile</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#skipWhile" class="link">Source</a></p><div class="doc"><p>Discards any characters as long as <code>p</code> returns True.  Always
 | succeeds.
</p></div></div><div class="top"><p class="src"><a name="v:string" class="def">string</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#string" class="link">Source</a></p><div class="doc"><p>Only succeeds if the characters in the input exactly match <code>str</code>.
</p></div></div><div class="top"><p class="src"><a name="v:lexChar" class="def">lexChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#lexChar" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-ReadMonads.html#v:lexChar">lexChar</a></code> checks if the next space delimited token from
 the input stream matches a specific <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a></code>.
 Uses <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a></code> inside <code><a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a></code> to handle failed matches, so
 that it always returns () on success.
</p></div></div><div class="top"><p class="src"><a name="v:lexString" class="def">lexString</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#lexString" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-ReadMonads.html#v:lexString">lexString</a></code> fetches the next whitespace delimited token from
 from the input and checks if it matches the <code>ByteString</code> input.
 Uses <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a></code> inside <code><a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a></code> to handle failed matches, so
 that it always returns () on success.
</p></div></div><div class="top"><p class="src"><a name="v:lexEof" class="def">lexEof</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#lexEof" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-ReadMonads.html#v:lexEof">lexEof</a></code> looks for optional spaces followed by the end of input.
 Uses <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a></code> inside <code><a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a></code> to handle failed matches, so
 that it always returns () on success.
</p></div></div><div class="top"><p class="src"><a name="v:takeTillChar" class="def">takeTillChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Darcs-Patch-ReadMonads.html#takeTillChar" class="link">Source</a></p><div class="doc"><p>Equivalent to <code>takeTill (==c)</code>, except that it is optimized for
 | the equality case.
</p></div></div><div class="top"><p class="src"><a name="v:myLex-39-" class="def">myLex'</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Darcs-Patch-ReadMonads.html#myLex%27" class="link">Source</a></p><div class="doc"><p>Like <code>myLex</code> except that it is in ParserM
</p></div></div><div class="top"><p class="src"><a name="v:anyChar" class="def">anyChar</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a><a href="src/Darcs-Patch-ReadMonads.html#anyChar" class="link">Source</a></p><div class="doc"><p>Accepts the next character and returns it.  Only fails at end of
 input.
</p></div></div><div class="top"><p class="src"><a name="v:endOfInput" class="def">endOfInput</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Darcs-Patch-ReadMonads.html#endOfInput" class="link">Source</a></p><div class="doc"><p>Only succeeds at end of input, consumes no characters.
</p></div></div><div class="top"><p class="src"><a name="v:takeTill" class="def">takeTill</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Darcs-Patch-ReadMonads.html#takeTill" class="link">Source</a></p><div class="doc"><p>Takes characters while <code>p</code> returns True.  Always succeeds.
</p></div></div><div class="top"><p class="src"><a name="v:checkConsumes" class="def">checkConsumes</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; m a -&gt; m a<a href="src/Darcs-Patch-ReadMonads.html#checkConsumes" class="link">Source</a></p><div class="doc"><p>Ensure that a parser consumes input when producing a result
 Causes the initial state of the input stream to be held on to while the
 parser runs, so use with caution.
</p></div></div><div class="top"><p class="src"><a name="v:linesStartingWith" class="def">linesStartingWith</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m [<a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>]<a href="src/Darcs-Patch-ReadMonads.html#linesStartingWith" class="link">Source</a></p><div class="doc"><p>This is a highly optimized way to read lines that start with a
 particular character.  To implement this efficiently we need access
 to the parser's internal state.  If this is implemented in terms of
 the other primitives for the parser it requires us to consume one
 character at a time.  That leads to <code>(&gt;&gt;=)</code> wasting significant
 time.
</p></div></div><div class="top"><p class="src"><a name="v:linesStartingWithEndingWith" class="def">linesStartingWithEndingWith</a> :: <a href="Darcs-Patch-ReadMonads.html#t:ParserM">ParserM</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Char.html#t:Char">Char</a> -&gt; m [<a href="/usr/share/doc/ghc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a>]<a href="src/Darcs-Patch-ReadMonads.html#linesStartingWithEndingWith" class="link">Source</a></p><div class="doc"><p>This is a highly optimized way to read lines that start with a
 particular character, and stops when it reaches a particular |
 character.  See <code><a href="Darcs-Patch-ReadMonads.html#v:linesStartingWith">linesStartingWith</a></code> for details on why this |
 defined here as a primitive.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>