module Case where
-- TODO: test where, guards
f x = case x of
Right (a,b,c) -> a b c
Left 0 -> 0
Left y
| u -> u
| let v = u, k <- v -> u
where
u = y
q = v -- not in scope
Left y -> t a y -- NB: 'a' is intentionally unbound
where
t = y x