[GHC] #11066: Inacessible branch should be warning - otherwise breaks type soundness?

GHC ghc-devs at haskell.org
Wed Nov 8 21:20:41 UTC 2017


#11066: Inacessible branch should be warning - otherwise breaks type soundness?
-------------------------------------+-------------------------------------
        Reporter:  rrnewton          |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.4.1
       Component:  Compiler          |              Version:  7.10.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect         |  Unknown/Multiple
  warning at compile-time            |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #8128, #8740      |  Differential Rev(s):  Phab:D1454
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by adamgundry):

 Replying to [comment:30 ekmett]:
 > I'm not particularly wedded to whether I use
 >
 > {{{#!hs
 > type family Gcd :: Nat -> Nat -> Nat
 > }}}
 >
 > or
 >
 > {{{#!hs
 > type family Gcd (n:: Nat) (m::Nat) :: Nat
 > }}}
 >
 > here.
 >
 > The one thing I have in favor (or against, depending on your
 perspective) of the Nat -> Nat -> Nat encoding is that it allows me to
 preclude the user actually defining any ad hoc base cases. Switching to
 the other address the "eta" concern to some extent.

 Doesn't an empty closed type family serve the same purpose? The first
 encoding seems simply wrong, because it implies that `Gcd` is injective.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11066#comment:33>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list