<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">There&#39;s a weird idiom that I see all the time in Haskell code where coders put commas at the beginning of lines:</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">data Thing = Thing {</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  x :: Int</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

  ,y :: Int</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  ,z :: Int</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  ,foo :: String</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
} ...</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">items = [</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

  &quot;red&quot;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  ,&quot;blue&quot;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  ,&quot;green&quot;</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">]</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

and it&#39;s pretty clear that the reason for this is that it&#39;s easier to comment out the last item by prefixing --</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default">

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">items = [</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  &quot;red&quot;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

  ,&quot;blue&quot;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  -- ,&quot;green&quot;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">]</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">instead of</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

<br></div><div class="gmail_default"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">items = [</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  &quot;red&quot;,</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  &quot;blue&quot; -- ,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">  -- &quot;green&quot;</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">]</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

The same sort of thing shows up with semicolons sometimes too</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

let {</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"> x = 1</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"> ;y = 2</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

 ;z = 3</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">} in</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

However, this punctuation-at-the-front just seems wrong.  It ultimately comes from using , as a separator rather than a terminator in the syntax of sequences.  But Python has this nifty quirk where you can leave a comma after the last item in a sequence, so that the following is OK in Python but not in Haskell:</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">items = [</font></div><div class="gmail_default">

<font face="verdana, sans-serif">  &quot;red&quot;,</font></div><div class="gmail_default"><font face="verdana, sans-serif">  &quot;blue&quot;,</font></div><div class="gmail_default"><font face="verdana, sans-serif">  -- &quot;green&quot;</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">]</font></div><div class="gmail_default"><br></div><div class="gmail_default" style>Part of why Python does this is to allow room in the syntax for tuples with a single item as in (1,)</div>

<div class="gmail_default"><br></div><div class="gmail_default" style><font face="verdana, sans-serif">There might be problems doing this with Haskell tuples because of tuple sections like (,,,) building a 4-tuple from 4 arguments, and where (x,y,) is interpreted as a function that takes another item and produces a three-component tuple.</font></div>

<div class="gmail_default" style><font face="verdana, sans-serif"><br></font></div><div class="gmail_default" style><font face="verdana, sans-serif">Anyway, this is a &quot;paper cut&quot; in the language that has been bugging me for a while, and since there&#39;s now a call for suggestions for Haskell 2014, I thought I&#39;d ask about it.</font></div>

<div class="gmail_default" style><font face="verdana, sans-serif"><br></font></div><div class="gmail_default" style><font face="verdana, sans-serif">-- Garrett Mitchener</font></div></div></div></div></div>