pure-borrow
Safe HaskellNone
LanguageGHC2021

Control.Monad.Borrow.Pure.Copyable

Synopsis

Documentation

class Copyable a where Source #

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α a %1 -> a Source #

Instances

Instances details
Copyable Int16 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Int16 %1 -> Int16 Source #

Copyable Int32 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Int32 %1 -> Int32 Source #

Copyable Int64 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Int64 %1 -> Int64 Source #

Copyable Int8 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Int8 %1 -> Int8 Source #

Copyable Word16 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Word16 %1 -> Word16 Source #

Copyable Word32 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Word32 %1 -> Word32 Source #

Copyable Word64 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Word64 %1 -> Word64 Source #

Copyable Word8 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Word8 %1 -> Word8 Source #

Copyable Integer Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Integer %1 -> Integer Source #

Copyable Natural Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Natural %1 -> Natural Source #

Copyable () Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α () %1 -> () Source #

Copyable Bool Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Bool %1 -> Bool Source #

Copyable Char Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Char %1 -> Char Source #

Copyable Double Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Double %1 -> Double Source #

Copyable Float Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Float %1 -> Float Source #

Copyable Int Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Int %1 -> Int Source #

Copyable Word Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α Word %1 -> Word Source #

Copyable a => Copyable (Max a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Max a) %1 -> Max a Source #

Copyable a => Copyable (Min a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Min a) %1 -> Min a Source #

Copyable a => Copyable (Product a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Product a) %1 -> Product a Source #

Copyable a => Copyable (Sum a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Sum a) %1 -> Sum a Source #

GenericCopyable a => Copyable (Generically a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Generically a) %1 -> Generically a Source #

Unsatisfiable ('ShowType (Array a) ':<>: 'Text " cannot be copied!") => Copyable (Array a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Array a) %1 -> Array a Source #

Copyable (Ur a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Ur a) %1 -> Ur a Source #

Unsatisfiable ('ShowType (Vector a) ':<>: 'Text " cannot be copied!") => Copyable (Vector a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Vector a) %1 -> Vector a Source #

Copyable a => Copyable (AsCopyable a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Clone

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (AsCopyable a) %1 -> AsCopyable a Source #

Unsatisfiable ('ShowType (Ref a) ':<>: 'Text " cannot be copied!") => Copyable (Ref a) Source # 
Instance details

Defined in Data.Ref.Linear

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Ref a) %1 -> Ref a Source #

Unsatisfiable ('ShowType (Vector a) ':<>: 'Text " cannot be copied!") => Copyable (Vector a) Source # 
Instance details

Defined in Data.Vector.Mutable.Linear.Borrow

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Vector a) %1 -> Vector a Source #

Copyable a => Copyable (Maybe a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Maybe a) %1 -> Maybe a Source #

Copyable a => Copyable [a] Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α [a] %1 -> [a] Source #

(Copyable a, Copyable b) => Copyable (Arg a b) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Arg a b) %1 -> Arg a b Source #

(Copyable a, Copyable b) => Copyable (Either a b) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (Either a b) %1 -> Either a b Source #

(Copyable a, Copyable b) => Copyable (a, b) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (a, b) %1 -> (a, b) Source #

(Copyable1 f, Copyable a) => Copyable (AsCopyable1 f a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (AsCopyable1 f a) %1 -> AsCopyable1 f a Source #

(Copyable a, Copyable b, Copyable c) => Copyable (a, b, c) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (a, b, c) %1 -> (a, b, c) Source #

(Copyable a, Copyable b, Copyable c, Copyable d) => Copyable (a, b, c, d) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (a, b, c, d) %1 -> (a, b, c, d) Source #

copyMut :: forall a (α :: Lifetime). Copyable a => Mut α a %1 -> Ur a Source #

A variant of copy that returns Ur wrapped copy of the value. Ur wrapper was not necessary because Share is always introduced unrestricted, whereas Mut is introduced linearly, so it is convenient to have Ur wrapped version.

genericCopy :: forall a (bk :: BorrowKind) (α :: Lifetime). GenericCopyable a => Borrow bk α a %1 -> a Source #

type GenericCopyable a = (Generic a, GCopyable (Rep a)) Source #

class Copyable1 (f :: Type -> Type) where Source #

Lifting of the Copyable operation to unary type constructors.

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α (f a) %1 -> f b Source #

Instances

Instances details
Copyable1 Par1 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α (Par1 a) %1 -> Par1 b Source #

GenericCopyable1 f => Copyable1 (Generically1 f) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α (Generically1 f a) %1 -> Generically1 f b Source #

(Copyable1 l, Copyable1 r) => Copyable1 (l :*: r) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α ((l :*: r) a) %1 -> (l :*: r) b Source #

(Copyable1 l, Copyable1 r) => Copyable1 (l :+: r) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α ((l :+: r) a) %1 -> (l :+: r) b Source #

Copyable c => Copyable1 (K1 i c :: Type -> Type) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α (K1 i c a) %1 -> K1 i c b Source #

Copyable1 f => Copyable1 (M1 i c f) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α (M1 i c f a) %1 -> M1 i c f b Source #

(Copyable1 f, Copyable1 g) => Copyable1 (f :.: g) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

liftCopy :: forall (bk :: BorrowKind) (α :: Lifetime) a b. (Borrow bk α a %1 -> b) -> Borrow bk α ((f :.: g) a) %1 -> (f :.: g) b Source #

newtype AsCopyable1 (f :: k -> Type) (a :: k) Source #

Constructors

AsCopyable1 (f a) 

Instances

Instances details
(Copyable1 f, Copyable a) => Copyable (AsCopyable1 f a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Copyable

Methods

copy :: forall (bk :: BorrowKind) (α :: Lifetime). Borrow bk α (AsCopyable1 f a) %1 -> AsCopyable1 f a Source #

copy1 :: forall f a (bk :: BorrowKind) (α :: Lifetime). (Copyable1 f, Copyable a) => Borrow bk α (f a) %1 -> f a Source #

genericCopy1 :: forall f a (α :: Lifetime). (GenericCopyable1 f, Copyable a) => Share α (f a) %1 -> f a Source #

genericLiftCopy :: forall f (bk :: BorrowKind) a b (α :: Lifetime). GenericCopyable1 f => (Borrow bk α a %1 -> b) -> Borrow bk α (f a) %1 -> f b Source #