[Haskell-cafe] Noob question about list comprehensions

Stephen Lavelle analytic at gmail.com
Wed Feb 16 10:27:22 CET 2011


Might better ways, but the following work:

length [c | x <- [1..100], let c = chain x , length c > 15]
length [c | x <- [1..100], c <- [chain x] , length c > 15]


On Wed, Feb 16, 2011 at 9:19 AM, Tako Schotanus <tako at codejive.org> wrote:

> Hello,
>
> I was going through some of the tuturials and trying out different
> (syntactic) alternatives to the given solutions and I I got to this line:
>
>     *length [chain x | x <- [1..100] , length (chain x) > 15]*
>
> Now, there's nothing wrong with it, it works of course. But the application
> of chain x is repeated twice and I wondered if there was a way for a guard
> in a list comprehension to refer to the item being produced?
>
> Like this for example (invented syntax):
>
>     *length [@c(chain x) | x <- [1..100] , length c > 15]*
>
> NB: Just to make clear, I'm not asking if there is an alternative way of
> preventing the repetition, of course there is, I'm just wondering about this
> very specific case within list comprehensions.
>
> -Tako
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110216/c7178d10/attachment.htm>


More information about the Haskell-Cafe mailing list