#1311: newtypes of unboxed types disallowed - documentation bug and/or feature
request
-----------------------------+----------------------------------------------
Reporter: Isaac Dupree | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.6.1
Severity: normal | Resolution:
Keywords: | Difficulty: Unknown
Os: Unknown | Testcase:
Architecture: Unknown |
-----------------------------+----------------------------------------------
Comment (by [EMAIL PROTECTED]):
I think `newtype FastBool = FastBool Int#` could potentially work. There
are a bunch of places where the compiler assumes newtypes are lifted but
that could be fixed. The newtype would have all the limitations of
unlifted types though. You still couldn't use it in polymorphic functions
or anything (which might be somewhat surprising to users of your code).
Probably a better use of time would be to make SpecConstr turn enumeration
types into `Int#`s, thus eliminating the need for FastBool altogether.
As a side note, isn't FastBool kind of broken by design? You can't really
do anything useful with it other than turning it back into a plain old
Bool. `and#`/`or#` don't make sense as they must be strict in both of
their arguments (which probably isn't what you want).
The GADT example can't really work as you can't forall over unboxed
tyvars. You can't write:
`unBoo :: forall (a::#) . Boo a -> a`
as `a` could have a completely different representation depending on how
it was instantiated. You could probably make it so
`unBoo :: Boo Int# -> Int#`
would work but why not just write `BooInt = BooInt Int#` at that point.
-Brian
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1311>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs