GHC.Types consturctors with #
dmp at rice.edu
Mon Nov 1 14:22:15 EDT 2010
GHC allows you to work with unboxed types. Int# is the type of unboxed ints. I# is a normal data constructor. So we can see that GHC represents a (boxed) Int as a normal algebraic data type
data Int = I# Int#
which says that an Int is a type with a single constructor (I#) that wraps a machine integer (Int#). By convention, unboxed types use a # in their name.
You can find more info about unboxed types here: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/primitives.html#glasgow-unboxed
To work with unboxed types in your code (or ghci) you need the MagicHash extension: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/syntax-extns.html#magic-hash
$ ghci -XMagicHash
GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> import GHC.Types
Prelude GHC.Types> I# 5#
On Nov 1, 2010, at 12:40 PM, Larry Evans wrote:
> data Int = I# Int#
> What does I# Int# mean? I've tried a simple interpretation:
> Prelude GHC.Types> I# 5#
> <interactive>:1:5: parse error (possibly incorrect indentation)
> Prelude GHC.Types>
> but obviously that failed :(
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
More information about the Glasgow-haskell-users