
#10708: Rejection of constant functions defined using conditional pattern matching -------------------------------------+------------------------------------- Reporter: | Owner: HubertGaravel | Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Keywords: | Operating System: Linux Architecture: x86 | Type of failure: GHC rejects | valid program Test Case: | Blocked By: Blocking: | Related Tickets: Differential Revisions: | -------------------------------------+------------------------------------- Hi, The Haskell program below is rejected, although it is correct. GHC gives the following error message: {{{ HASKELL/tricky.hs:12:1: Multiple declarations of `Main.d3' Declared at: HASKELL/tricky.hs:10:1 HASKELL/tricky.hs:11:1 HASKELL/tricky.hs:12:1 }}} I agree that the definition of d3 is tricky and useless, but it seems to be valid. This example was exctracted from Haskell code automatically produced by an in-house code generator. {{{#!hs data Nat = D0 | Succ Nat deriving (Show, Eq, Ord) d1 :: Nat d2 :: Nat d3 :: Nat d1 = (Succ D0) d2 | D0 == D0 = D0 d3 | D0 /= D0 = D0 d3 | (Succ D0) == D0 = D0 d3 | (Succ D0) /= D0 = (Succ D0) main = do print d1 print d2 print d3 }}} Best regards Hubert -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10708 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler