<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=white lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>IMHO and being a newbie having 20 years of professional C/C++/C#
experience but hardly any Haskell experience, I agree with this&#8230; I find the
monad syntax very confusing, because it looks so much like imperative code, but
it isn&#8217;t. Personally I also liked the Concurrent Clean approach, although this
also introduced extra syntax for the compiler, while &#8216;cmd1 &gt;&gt;= \x&#8230;&#8217; does
not. You have to type more, but you see much clearer what is going on. <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Peter<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>PS: It would be very nice for beginners to have a special tool /
text editor that allows you see the desugared form of monads and other
constructs&#8230;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";
color:windowtext'>From:</span></b><span style='font-size:10.0pt;font-family:
"Tahoma","sans-serif";color:windowtext'> haskell-cafe-bounces@haskell.org
[mailto:haskell-cafe-bounces@haskell.org] <b>On Behalf Of </b>Paul Hudak<br>
<b>Sent:</b> Wednesday, August 08, 2007 8:21 PM<br>
<b>To:</b> haskell-cafe@haskell.org<br>
<b>Cc:</b> paul.hudak@yale.edu<br>
<b>Subject:</b> [Haskell-cafe] a regressive view of support for imperative
programming in Haskell<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>All of the
recent talk of support for imperative programming in Haskell makes me really
nervous.&nbsp; To be honest, I've always been a bit uncomfortable even with
monad syntax.&nbsp; Instead of:<br>
<br>
do x &lt;- cmd1<br>
&nbsp; &nbsp;&nbsp; y &lt;- cmd2<br>
&nbsp;&nbsp;&nbsp;&nbsp; ...<br>
&nbsp;&nbsp;&nbsp;&nbsp; return e<br>
<br>
I was always perfectly happy with:<br>
<br>
cmd1 &gt;&gt;= \x-&gt;<br>
cmd2 &gt;&gt;= \y-&gt;<br>
...<br>
return e<br>
<br>
Functions are in my comfort zone; syntax that hides them takes me out of my
comfort zone.<br>
<br>
In my opinion one of the key principles in the design of Haskell has been the
insistence on purity.&nbsp; It is arguably what led the Haskell designers to
&quot;discover&quot; the monadic solution to IO, and is more<br>
generally what inspired many researchers to &quot;discover&quot; purely
functional solutions to many seemingly imperative problems.&nbsp; With
references and mutable data structures and IO and who-knows-what-else to
support the Imperative Way, this discovery process becomes stunted.<br>
<br>
Well, you could argue, monad syntax is what really made Haskell become more
accepted by the masses, and you may be right (although perhaps Simon's
extraordinary performance at OSCOM is more of what we need).&nbsp; On the other
hand, if we give imperative programmers the tools to do all the things they are
used to doing in C++, then we will be depriving them of the joys of programming
in the Functional Way.&nbsp; How many times have we seen responses to newbie
posts along the lines of, &quot;That's how you'd do it in C++, but in Haskell
here's a better way...&quot;.<br>
<br>
I hope I don't start a flame war with this post -- I'm just expressing my
opinion, which admittedly is probably regressive rather than progressive :-).<br>
<br>
&nbsp; -Paul<br>
</span><br>
<br>
<o:p></o:p></p>

<pre>-- <o:p></o:p></pre><pre>Professor Paul Hudak<o:p></o:p></pre><pre>Department of Computer Science&nbsp;&nbsp;&nbsp; Office: (203) 432-1235<o:p></o:p></pre><pre>Yale University&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FAX:&nbsp; &nbsp;&nbsp;(203) 432-0593<o:p></o:p></pre><pre>P.O. Box 208285&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email:&nbsp; <a
href="mailto:paul.hudak@yale.edu">paul.hudak@yale.edu</a><o:p></o:p></pre><pre>New Haven, CT 06520-8285&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WWW:&nbsp;&nbsp;&nbsp; <a
href="http://www.cs.yale.edu/~hudak">www.cs.yale.edu/~hudak</a><o:p></o:p></pre></div>

</body>

</html>