Doaitse Swierstra wrote:
I would prefer notation like:
data Parser a | Alt (Parser a) (Parser a)
| Map ( b -> a) (Parser b)
| Succ a
Parser (a,b) | Seq (Parser a) (Parser b)
Parser String | Lit (String -> Bool)
Parser [a] | Many (Parser a)
This takes away the noise in the heading of the current GHC notation
(which is just plain confusing), and enables e.g. grouping of common
alternatives,
The above is very similar to Bulat's proposal
http://www.haskell.org/pipermail/haskell/2006-September/018466.html ie
(adding the idea of using another layout block to group alternatives on the
rhs):
data
Parser a =
Alt (Parser a) (Parser a)
Map ( b -> a) (Parser b)
Succ a
Parser (a,b) = Seq (Parser a) (Parser b)
Parser String = Lit (String -> Bool)
Parser [a] = Many (Parser a)
I don't think there's a good reason to use | to separate alternatives when
we've already got {;} to form blocks of things, and to put things on the
same line you'd just use:
data {Hi Int = {One; Two; Three}; Hi a = Foo a}
This would also make it easier to replace the => syntax at some future point
with the "guard-like" | syntax used in Clean (also suggested by Bulat in the
above post).
Regards, Brian
--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
http://www.metamilk.com
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell