# Easy syntax question

**Mike Gunter
**
m@ryangunter.com

*27 Aug 2001 12:44:45 -0700*

Or, if you need several cases, you can use something like:
>* funcGuard n | n `elem` [2,5,9] = 5
*>* | n `elem` [4,18] = 1
*>* | otherwise = 7
*
or, if you want an expression:
>* caseGuard n = case undefined of
*>* _ | n `elem` [2,5,9] -> 5
*>* | n `elem` [4,18] -> 1
*>* | otherwise -> 7
*
mike
Dean Herington <heringto@cs.unc.edu> writes:
>* Mark Carroll wrote:
*>*
*>* > I can write a function x :: Integer -> Integer that returns 5 if I give it
*>* > 2, 5 or 9, or 7 otherwise. Say,
*>* >
*>* > x 2 = 5
*>* > x 5 = 5
*>* > x 9 = 5
*>* > x _ = 7
*>* >
*>* > Generally, this is a question about where multiple cases lead to the same
*>* > thing, maybe even in the middle of a function. (Like C's "case 1: case 2:
*>* > case 3: foo; break;".)
*>* >
*>* > Does it get any better than this, though? I can't convince 'case' to do
*>* > something like,
*>* >
*>* > case n of
*>* > 2,5,9 -> 5
*>* > otherwise -> 7
*>* >
*>* > Am I missing some syntax somewhere? I'm lost in the grammar in the Haskell
*>* > report.
*>* >
*>* > -- Mark
*>*
*>* I would write:
*>*
*>* > if elem n [2,5,9] then 5 else 7
*>*
*>* Dean
*