[GHC] #12911: Levity polymorphism check eliminates non-levity-polymorphic data constructor
GHC
ghc-devs at haskell.org
Fri Dec 2 20:07:45 UTC 2016
#12911: Levity polymorphism check eliminates non-levity-polymorphic data
constructor
-------------------------------------+-------------------------------------
Reporter: goldfire | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
| LevityPolymorphism
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by josef):
I think I hit upon this restriction when trying to implement some of the
code from the levity polymorphism paper. The section on levity polymorphic
type classes explains how the dictionary from levity polymorphic Num is
perfectly safe.
{{{
data Num (a :: TYPE r)
= MkNum {(+) :: a → a → a, abs :: a → a}
}}}
But sadly GHC rejects the data type declaration above.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12911#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list