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 <t...@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@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to