Unboxed type
From HaskellWiki
(Difference between revisions)
(Import from old HaWiki) |
m (Fixed a link) |
||
| Line 33: | Line 33: | ||
#See the [http://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html discussion on primitives] in the [http://www.haskell.org/ghc/docs/latest/html/users_guide/users-guide.html GHC's User's Guide]. | #See the [http://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html discussion on primitives] in the [http://www.haskell.org/ghc/docs/latest/html/users_guide/users-guide.html GHC's User's Guide]. | ||
| - | #See the [http://haskell. | + | #See the [http://www.haskell.org/ghc/docs/latest/html/libraries/base/GHC-Exts.html GHC.Exts] module. |
#See SPJ's paper [http://research.microsoft.com/Users/simonpj/Papers/unboxed-values.ps.Z Unboxed values as first class citizens]. | #See SPJ's paper [http://research.microsoft.com/Users/simonpj/Papers/unboxed-values.ps.Z Unboxed values as first class citizens]. | ||
---- | ---- | ||
This page is a work in progress by IsaacJones. More input welcome :) | This page is a work in progress by IsaacJones. More input welcome :) | ||
Revision as of 23:38, 23 August 2007
Unboxed types are types that represent raw values. Unboxed types have kind #.
Note that unboxed types of different storage behaviours (four bytes, eight bytes etc.) are all lumped together under kind #. As a result, type variables must have kinds which are #-free.
Contents |
1 From the old Wiki
One might imagine numbers naively represented in Haskell "as pointer to a heap-allocated object which is either an unevaluated closure or is a "box" containing the number's actual value, which has now overwritten the closure" [3. below]. GHC (and other implementations?) allow direct access to the value inside the box, or "Unboxed" values.
In GHC, by convention(?), unboxed values have a hash mark as a suffix to their name. For instance, the unboxed reprsentation of42 is 42#. There are some restrictions to their use. In particular, you can't pass them to polymorphic functions (like show
I#
Int
module Main where import GHC.Exts showUnboxedInt :: Int# -> String showUnboxedInt n = (show $ I# n) ++ "#"
n
I#
Int
1.1 Unboxed Tuples and Arrays
...
1.2 When to use Unboxed Types
...
1.3 See Also
- See the discussion on primitives in the GHC's User's Guide.
- See the GHC.Exts module.
- See SPJ's paper Unboxed values as first class citizens.
This page is a work in progress by IsaacJones. More input welcome :)
