proposal for trailing comma and semicolon
Garrett Mitchener
garrett.mitchener at gmail.com
Fri May 17 18:17:17 CEST 2013
There's a weird idiom that I see all the time in Haskell code where coders
put commas at the beginning of lines:
data Thing = Thing {
x :: Int
,y :: Int
,z :: Int
,foo :: String
} ...
items = [
"red"
,"blue"
,"green"
]
and it's pretty clear that the reason for this is that it's easier to
comment out the last item by prefixing --
items = [
"red"
,"blue"
-- ,"green"
]
instead of
items = [
"red",
"blue" -- ,
-- "green"
]
The same sort of thing shows up with semicolons sometimes too
let {
x = 1
;y = 2
;z = 3
} in
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:
items = [
"red",
"blue",
-- "green"
]
Part of why Python does this is to allow room in the syntax for tuples with
a single item as in (1,)
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.
Anyway, this is a "paper cut" in the language that has been bugging me for
a while, and since there's now a call for suggestions for Haskell 2014, I
thought I'd ask about it.
-- Garrett Mitchener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-prime/attachments/20130517/d13174d5/attachment.htm>
More information about the Haskell-prime
mailing list