pure-borrow
Safe HaskellNone
LanguageGHC2021

Control.Monad.Borrow.Pure.Affine

Synopsis

Affine Modality

class Affine a where Source #

Methods

aff :: a %1 -> Aff a Source #

Instances

Instances details
Affine All Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: All %1 -> Aff All Source #

Affine Any Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Any %1 -> Aff Any Source #

Affine Int16 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Int16 %1 -> Aff Int16 Source #

Affine Int32 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Int32 %1 -> Aff Int32 Source #

Affine Int64 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Int64 %1 -> Aff Int64 Source #

Affine Int8 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Int8 %1 -> Aff Int8 Source #

Affine Word16 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Word16 %1 -> Aff Word16 Source #

Affine Word32 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Word32 %1 -> Aff Word32 Source #

Affine Word64 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Word64 %1 -> Aff Word64 Source #

Affine Word8 Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Word8 %1 -> Aff Word8 Source #

Affine () Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: () %1 -> Aff () Source #

Affine Bool Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Bool %1 -> Aff Bool Source #

Affine Char Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Char %1 -> Aff Char Source #

Affine Int Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Int %1 -> Aff Int Source #

Affine Word Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Word %1 -> Aff Word Source #

Affine a => Affine (First a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: First a %1 -> Aff (First a) Source #

Affine a => Affine (Last a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Last a %1 -> Aff (Last a) Source #

Affine a => Affine (First a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: First a %1 -> Aff (First a) Source #

Affine a => Affine (Last a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Last a %1 -> Aff (Last a) Source #

Affine a => Affine (Dual a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Dual a %1 -> Aff (Dual a) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Product a %1 -> Aff (Product a) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Sum a %1 -> Aff (Sum a) Source #

Movable a => Affine (AsMovable a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: AsMovable a %1 -> Aff (AsMovable a) Source #

Affine (Ur a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Ur a %1 -> Aff (Ur a) Source #

GenericAffine a => Affine (GenericallyAffine a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Affine (Now α) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Lifetime.Token.Internal

Methods

aff :: Now α %1 -> Aff (Now α) Source #

Affine (Ref a) Source # 
Instance details

Defined in Data.Ref.Linear

Methods

aff :: Ref a %1 -> Aff (Ref a) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Maybe a %1 -> Aff (Maybe a) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: [a] %1 -> Aff [a] Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: Either a b %1 -> Aff (Either a b) Source #

Affine (LabelsOrBorrows h xs) Source # 
Instance details

Defined in Data.Record.Linear.Borrow.Experimental.PatternMatch

Methods

aff :: LabelsOrBorrows h xs %1 -> Aff (LabelsOrBorrows h xs) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: (a, b) %1 -> Aff (a, b) Source #

Affine (Borrow bk α a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.BO.Internal

Methods

aff :: Borrow bk α a %1 -> Aff (Borrow bk α a) Source #

Affine (Borrows bk α xs) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Experimental.Borrows

Methods

aff :: Borrows bk α xs %1 -> Aff (Borrows bk α xs) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: (a, b, c) %1 -> Aff (a, b, c) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: (a, b, c, d) %1 -> Aff (a, b, c, d) Source #

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

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

aff :: (a, b, c, d, e) %1 -> Aff (a, b, c, d, e) Source #

newtype AsAffine a Source #

Constructors

AsAffine a 

Instances

Instances details
Affine a => Consumable (AsAffine a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

consume :: AsAffine a %1 -> () #

data Aff a Source #

Instances

Instances details
Functor Aff Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

fmap :: (a %1 -> b) -> Aff a %1 -> Aff b #

Comonad Aff Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

extract :: Aff a %1 -> a Source #

duplicate :: Aff a %1 -> Aff (Aff a) Source #

ComonadApply Aff Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

(<@>) :: Aff (a %1 -> b) %1 -> Aff a %1 -> Aff b Source #

Consumable (Aff a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

consume :: Aff a %1 -> () #

affu :: a -> Aff a Source #

You can bring unrestricted resources into Aff context.

Note that, when you use aff to bring a foreign resource (e.g. Ptr), it is user's responsibility to ensure free is called on the resource after the Aff (Ptr a) is popped.

unaff :: Aff a %1 -> a Source #

pop :: Aff a %1 -> () Source #

Linear Generics

class (Generic a, GAffine (Rep a)) => GenericAffine a Source #

A constraint synonym for types for which Affine instance can be safely derived via Generically.

Instances

Instances details
(Generic a, GAffine (Rep a)) => GenericAffine a Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

newtype GenericallyAffine a Source #

We need this instead of Generically becuase it gives a different Consumable instance.

Constructors

GenericallyAffine a 

Instances

Instances details
GenericAffine a => Consumable (GenericallyAffine a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal

Methods

consume :: GenericallyAffine a %1 -> () #

GenericAffine a => Affine (GenericallyAffine a) Source # 
Instance details

Defined in Control.Monad.Borrow.Pure.Affine.Internal