"where" block local to a guard?
Dr Mark H Phillips
mark@austrics.com.au
17 Sep 2002 15:07:05 +0930
Hi,
Suppose you have some function
functn :: Int -> Int
functn i
| i>5 = t * i
| i>0 = t_ * i
| otherwise = 1
where
t = functn (i-2)
t_ = functn (i-1)
Notice that t and t_ are really local to a guard, rather
than to the whole guard section. Why then, can't you write:
functn :: Int -> Int
functn i
| i>5 = t * i
where
t = functn (i-2)
| i>0 = t * i
where
t = functn (i-1)
| otherwise = 1
In particular, the above would mean you wouldn't need two names
t and t_, you could just use t for both!
Am I doing something wrongly, or is there a good reason why
where isn't allowed to be used in this way?
Thanks,
Mark.
--
Dr Mark H Phillips
Research Analyst (Mathematician)
AUSTRICS - smarter scheduling solutions - www.austrics.com
Level 2, 50 Pirie Street, Adelaide SA 5000, Australia
Phone +61 8 8226 9850
Fax +61 8 8231 4821
Email mark@austrics.com.au