HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulelinear-base-0.4.0Haskell2010

Data.Unrestricted.Linear.Internal.Movable

  • 2 classes
  • 1 value

Movable

3 declarations
classclass Dupable a => Movable a where
#

Use Movable a to represent a type which can be used many times even when given linearly. Simple data types such as Bool or [] are Movable. Though, bear in mind that this typically induces a deep copy of the value.

Formally, Movable a is the class of coalgebras of the Ur comonad. That is

  • unur (move x) = x
  • move @(Ur a) (move @a x) = fmap (move @a) $ move @a x

Additionally, a Movable instance must be compatible with its Dupable parent instance. That is:

  • case move x of {Ur _ -> ()} = consume x
  • case move x of {Ur x -> (x, x)} = dup2 x

Methods

Instances33Movable, …
  • Movable AllDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable AnyDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable Int16Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Int32Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Int64Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Int8Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Word16Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Word32Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Word64Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable Word8Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances · orphan
  • Movable BoolDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable CharDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable DoubleDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable FloatDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable IntDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable OrderingDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable WordDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable ()Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable (Ur a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable (NonEmpty a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable (Product a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable (Sum a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable (Maybe a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable (MovableNum a)Defined in linear-base-0.4.0 · Data.Num.Linear
  • Movable a => Movable (AsMovable a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Instances
  • Movable a => Movable (a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable a => Movable [a]Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Generic a, GMovable (Rep a)) => Movable (Generically a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Movable a, Movable b) => Movable (Either a b)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Movable a, Movable b) => Movable (a, b)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Movable a, Movable b, Movable c) => Movable (a, b, c)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Movable a, Movable b, Movable c, Movable d) => Movable (a, b, c, d)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (Movable a, Movable b, Movable c, Movable d, Movable e) => Movable (a, b, c, d, e)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
classclass GDupable f => GMovable (f :: Type -> Type) where
#
Instances13GMovable, …
  • GMovable U1Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable UCharDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable UDoubleDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable UFloatDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable UIntDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable UWordDefined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable V1Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable (MP1 'Many f)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable f => GMovable (MP1 'One f)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • Movable c => GMovable (K1 i c)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (GMovable f, GMovable g) => GMovable (f :*: g)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • (GMovable f, GMovable g) => GMovable (f :+: g)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
  • GMovable f => GMovable (M1 i t f)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable
valuegenericMove :: (Generic a, GMovable (Rep a)) => a %1 -> Ur a
#