MultiWayIf makes it easy to write partial programs that are not catched by -Wall
The following partial function will pass -Wall
-- program 1
{-# LANGUAGE MultiWayIf #-}
foo :: Bool -> Int
foo b = if | b -> 23
While the following two alternatives will not:
-- program 2
foo :: Bool -> Int
foo b | b = 23
-- program 3
foo :: Bool -> Int
foo b = case () of
() | b -> 23
Note that the GHC User's Guide states that "program 1" and "program 3" are equivalent.
- Is this a bug or by design?
- I guess at the very least we would want to update the User's Guide
Trac metadata
Trac field | Value |
---|---|
Version | 8.2.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |