<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.59">
<TITLE>RE: [Haskell-cafe] Parsec Expected Type</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Many thanks guys, you've really taught me how to catch a fish here!<BR>
Paul<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: Brandon S. Allbery KF8NH [<A HREF="mailto:allbery@ece.cmu.edu">mailto:allbery@ece.cmu.edu</A>]<BR>
Sent: Sat 3/29/2008 1:41 AM<BR>
To: haskell-cafe@haskell.org Cafe<BR>
Cc: Paul Keir<BR>
Subject: Re: [Haskell-cafe] Parsec Expected Type<BR>
<BR>
<BR>
On Mar 28, 2008, at 21:12 , Ryan Ingram wrote:<BR>
&gt; On 3/28/08, Paul Keir &lt;pkeir@dcs.gla.ac.uk&gt; wrote:<BR>
&gt;&gt; What I'd like is to parse either the string &quot;parameter&quot;, or the&nbsp;<BR>
&gt;&gt; string &quot;:&quot;.<BR>
&gt;&gt; I'm using 'reserved' and 'symbol' because they seem to correspond&nbsp;<BR>
&gt;&gt; well to<BR>
&gt;&gt; the concepts in the language I'm parsing. I could try,<BR>
&gt;&gt;<BR>
&gt;&gt; tester3 = reserved &quot;parameter&quot; &lt;|&gt; do { symbol &quot;:&quot;; return () }<BR>
&gt;<BR>
&gt; Or you could factor this behavior out into a new combinator:<BR>
&gt;<BR>
&gt;&gt; or_ :: Parser a -&gt; Parser b -&gt; Parser ()<BR>
&gt;&gt; or_ x y = (x &gt;&gt; return ()) &lt;|&gt; (y &gt;&gt; return ())<BR>
&gt;<BR>
&gt;&gt; tester3 = reserved &quot;parameter&quot; `or_` symbol &quot;:&quot;<BR>
<BR>
Or if you'd like to be inscrutable:<BR>
<BR>
import Data.Function<BR>
<BR>
or_ = (&gt;&gt; return ()) `on` (&lt;|&gt;)<BR>
<BR>
--<BR>
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com<BR>
system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu<BR>
electrical and computer engineering, carnegie mellon university&nbsp;&nbsp;&nbsp; KF8NH<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>