primitive-unlifted-2.1.0.0: Primitive GHC types with unlifted types inside
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Primitive.Unlifted.Box

Description

Traditionally, there were only a few basic unlifted types available in GHC, all of them primitive. Now, with the UnliftedNewtypes and UnliftedDatatypes extensions, users are free to create as many as they like. However, many essential facilities, like the Monad class, still work only with lifted types, so users must wrap their unlifted types into lifted ones to use those. If the wrapped version of a type is likely to be used heavily on its own, it often makes sense to write a custom wrapper type for it. This module exports a general box for situations where the focus should be on the unlifted type rather than its wrapper.

Synopsis

Documentation

data Box (a :: UnliftedType) Source #

Turn an arbitrary unlifted type into a lifted one with a PrimUnlifted instance. For example, given

data UnliftedMaybe a :: UnliftedType where
  UnliftedNothing :: UnliftedMaybe a
  UnliftedJust :: a -> UnliftedMaybe a

we have

Box (UnliftedMaybe a) :: Type

Constructors

Box# 

Fields

Instances

Instances details
PrimUnlifted (Box a) Source # 
Instance details

Defined in Data.Primitive.Unlifted.Box

Associated Types

type Unlifted (Box a) :: UnliftedType Source #

type Unlifted (Box a) Source # 
Instance details

Defined in Data.Primitive.Unlifted.Box

type Unlifted (Box a) = a