[Haskell-beginners] case as guards in lambda functions
daniel.is.fischer at web.de
Wed Nov 10 15:58:15 EST 2010
On Wednesday 10 November 2010 21:13:26, Russ Abbott wrote:
> I have often wanted to use a guard in a lambda function and had thought
> it wasn't possible. But apparently the case construct allows a viable
> approach. Here is a silly example.
> testCase = map
> (\xs -> case xs of
>  -> "empty list"
> [y] | y < 5 -> "small singleton"
> | otherwise -> "large singleton"
> _ -> "multi-element list")
> > testCase [, , , [1,2,3]]
> ["empty","small singleton","large singleton","multi-element list"]
> It seems particularly useful to be able to include both patterns and
> guards in case expressions. I haven't seen this usage anywhere.
If it's not a very small case-expression, usually one puts it in a where
map f list
f xs = case xs of
since a huge lambda expression tends to obscure the overall structure of
> Is it considered bad form?
If the expression becomes too large.
> -- Russ *
More information about the Beginners