On Mon, 2008-11-10 at 18:48 +0000, Andrew Coppin wrote:
> Jonathan Cast wrote:
> > On Mon, 2008-11-10 at 18:20 +0000, Andrew Coppin wrote:
> >   
> >> Mitchell, Neil wrote:
> >>     
> >>> In general:
> >>>
> >>> if boolean then [value] else []
> >>>
> >>> Can be written as:
> >>>
> >>> [value | boolean]
> >>>   
> >>>       
> >> Is there any specific reason why this is valid?
> >>     
> >
> > Is there any specific reason to dis-allow it?  The grammar here looks
> > something like (NB: I didn't double-check the report):
> >
> >     list_compr ::= [ value | generator* ]
> >     generator ::= boolean | pat <- list | let binds
> >   
> 
> Hmm, that's interesting. I didn't know that a Boolean was a valid generator.
> 
> (Presumably this has the effect of filtering?)
> 
> The only time I use list comprehensions is when I quickly want a 
> Cartesian product. I wasn't really aware it could filter as well.

Funny.  About the only time I use list comprehensions is when I want a
generalized filter.

Serious computations get the do-notation, instead.  (And sometimes I
*have* to use do-notation for filtering, because I need an error monad
(usually Maybe) for other reasons).

jcc


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to