guards in arrow notation (Arrows extension) case statement cause compiler panic
The attached test case causes this panic message:
ghc: panic! (the 'impossible' happened) (GHC version 6.12.1 for x86_64-unknown-linux): initC: srt_lbl Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
The offending line is the one with '| neg'. It doesn't panic if you use the commented out line below it instead.
This kind of case statement is specific to arrow notation (provided by the Arrows extension) - the compiler uses ArrowChoice to implement it.