General pattern bindings
Stefan O'Rear
stefanor at cox.net
Fri Apr 13 22:24:51 EDT 2007
On Sat, Apr 14, 2007 at 03:43:03AM +0200, Twan van Laarhoven wrote:
> In the interest of removing things from the standard, I found this in
> the Haskell 98 report (section 4.4.3.2):
>
> > The general form of a pattern binding is p match, where a match is the
> > same structure as for function bindings above; in other words, a
> > pattern binding is:
> >
> > p | g1 = e1
> > | g2 = e2
> > ...
> > | gm = em
> > where { decls }
>
> I did not even know these things existed, is there anyone who actually
> uses general pattern bindings?
>
> If not, the question becomes whether removing these bindings would
> improve the language. It can be argued that it makes the language less
> consistent. Declarations would change from
>
> > decl -> (funlhs | pat0) rhs
> > rhs -> = exp [where decls]
> > | gdrhs [where decls]
>
> to something like
>
> > decl -> funlhs rhs
> > | pat0 srhs
> > srhs -> = exp [where decls]
> > rhs -> srhs
> > | gdrhs [where decls]
>
> On the other hand, we can remove most of section 4.3.2.2.
>
> Any opinions?
At one point vty defined the standard colors using the following wonderfully elegant code:
[black, red, green, yellow, blue, magenta, cyan, white] = map Color [0..7]
Unfortunately ghc generated hideous code for this, so I had to inline
it manually. So it goes. (yow, what got into me there?)
I'm pretty sure I've seen this once or twice:
(x,y) | someCondition = x y z
| otherwise = b a r
Stefan
More information about the Haskell-prime
mailing list