raw-feldspar-0.3: Resource-Aware Feldspar

Safe HaskellNone
LanguageHaskell2010

Feldspar.Representation

Contents

Description

Internal representation of Feldspar programs

Synopsis

Object-language types

type TypeRep = Struct PrimType' PrimTypeRep Source #

Representation of all supported types

class (Eq a, Show a, Typeable a, Inhabited a) => Type a where Source #

Supported types

Methods

typeRep :: TypeRep a Source #

Reify a type

Instances
Type Bool Source # 
Instance details

Defined in Feldspar.Representation

Type Double Source # 
Instance details

Defined in Feldspar.Representation

Type Float Source # 
Instance details

Defined in Feldspar.Representation

Type Int8 Source # 
Instance details

Defined in Feldspar.Representation

Type Int16 Source # 
Instance details

Defined in Feldspar.Representation

Type Int32 Source # 
Instance details

Defined in Feldspar.Representation

Type Int64 Source # 
Instance details

Defined in Feldspar.Representation

Type Word8 Source # 
Instance details

Defined in Feldspar.Representation

Type Word16 Source # 
Instance details

Defined in Feldspar.Representation

Type Word32 Source # 
Instance details

Defined in Feldspar.Representation

Type Word64 Source # 
Instance details

Defined in Feldspar.Representation

Type (Complex Double) Source # 
Instance details

Defined in Feldspar.Representation

Type (Complex Float) Source # 
Instance details

Defined in Feldspar.Representation

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

Defined in Feldspar.Representation

Methods

typeRep :: TypeRep (a, b) Source #

class (PrimType' a, Type a) => PrimType a Source #

Alias for the conjunction of PrimType' and Type

Instances
CompTypeClass PrimType Source # 
Instance details

Defined in Feldspar.Representation

Methods

compType :: (PrimType a, MonadC m) => proxy1 PrimType -> proxy2 a -> m Type #

compLit :: (PrimType a, MonadC m) => proxy PrimType -> a -> m Exp #

(PrimType' a, Type a) => PrimType a Source # 
Instance details

Defined in Feldspar.Representation

toTypeRep :: Struct PrimType' c a -> TypeRep a Source #

Convert any Struct with a PrimType constraint to a TypeRep

typeEq :: TypeRep a -> TypeRep b -> Maybe (Dict (a ~ b)) Source #

Check whether two type representations are equal

witTypeable :: TypeRep a -> Dict (Typeable a) Source #

Reflect a TypeRep to a Typeable constraint

data TypeRepFun a where Source #

Representation of supported value types + N-ary functions over such types

Constructors

ValT :: TypeRep a -> TypeRepFun a 
FunT :: TypeRep a -> TypeRepFun b -> TypeRepFun (a -> b) 

typeEqFun :: TypeRepFun a -> TypeRepFun b -> Maybe (Dict (a ~ b)) Source #

Check whether two type representations are equal

newtype Ref a Source #

Mutable variable

Constructors

Ref 
Instances
Eq (Ref a) Source # 
Instance details

Defined in Feldspar.Representation

Methods

(==) :: Ref a -> Ref a -> Bool #

(/=) :: Ref a -> Ref a -> Bool #

type DRef a = Ref (Data a) Source #

Reference specialized to Data elements

data Arr a Source #

Mutable array

Instances
Eq (Arr a) Source #

== checks if two Arr use the same physical array. The length and offset are ignored.

Instance details

Defined in Feldspar.Representation

Methods

(==) :: Arr a -> Arr a -> Bool #

(/=) :: Arr a -> Arr a -> Bool #

Slicable (Arr a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

slice :: Data Index -> Data Length -> Arr a -> Arr a Source #

Finite (Arr a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

length :: Arr a -> Data Length Source #

(MarshalHaskell (Internal a), MarshalFeld a, Syntax a) => MarshalFeld (Arr a) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Arr a) :: Type Source #

Methods

fwrite :: Handle -> Arr a -> Run () Source #

fread :: Handle -> Run (Arr a) Source #

(Syntax a, BulkTransferable a, ContainerType a ~ Arr a) => Transferable (Arr a) Source # 
Instance details

Defined in Feldspar.Data.Vector

Associated Types

type SizeSpec (Arr a) :: Type Source #

type HaskellRep (Arr a) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Arr a) = [Internal a]
type SizeSpec (Arr a) Source # 
Instance details

Defined in Feldspar.Data.Vector

type DArr a = Arr (Data a) Source #

Array specialized to Data elements

data IArr a Source #

Immutable array

Instances
MonadComp m => Manifestable2 m (Manifest2 a) a Source #

manifest2 and manifestFresh2 are no-ops. manifestStore2 does a proper arrCopy.

Instance details

Defined in Feldspar.Data.Vector

MonadComp m => Manifestable m (Manifest a) a Source #

manifest and manifestFresh are no-ops. manifestStore does a proper arrCopy.

Instance details

Defined in Feldspar.Data.Vector

Methods

manifest :: Arr a -> Manifest a -> m (Manifest a) Source #

manifestFresh :: Manifest a -> m (Manifest a) Source #

manifestStore :: Arr a -> Manifest a -> m () Source #

(Syntax a, MonadComp m) => Seqy m (Manifest a) a Source # 
Instance details

Defined in Feldspar.Data.Vector

Methods

toSeq :: Manifest a -> Seq m a Source #

(Syntax a, MonadComp m) => Pushy2 m (Manifest2 a) a Source # 
Instance details

Defined in Feldspar.Data.Vector

Methods

toPush2 :: Manifest2 a -> Push2 m a Source #

(Syntax a, MonadComp m) => Pushy2 m (Manifest a) a Source #

Convert to a Push2 with a single row

Instance details

Defined in Feldspar.Data.Vector

Methods

toPush2 :: Manifest a -> Push2 m a Source #

(Syntax a, MonadComp m) => Pushy m (Manifest a) a Source # 
Instance details

Defined in Feldspar.Data.Vector

Methods

toPush :: Manifest a -> Push m a Source #

Slicable (IArr a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

slice :: Data Index -> Data Length -> IArr a -> IArr a Source #

Finite (IArr a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

length :: IArr a -> Data Length Source #

Syntax a => Indexed (IArr a) Source # 
Instance details

Defined in Feldspar.Frontend

Associated Types

type IndexedElem (IArr a) :: Type Source #

Methods

(!) :: IArr a -> Data Index -> IndexedElem (IArr a) Source #

(MarshalHaskell (Internal a), MarshalFeld a, Syntax a) => MarshalFeld (IArr a) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (IArr a) :: Type Source #

Methods

fwrite :: Handle -> IArr a -> Run () Source #

fread :: Handle -> Run (IArr a) Source #

(Syntax a, BulkTransferable a, ContainerType a ~ Arr a) => Transferable (IArr a) Source # 
Instance details

Defined in Feldspar.Data.Vector

Associated Types

type SizeSpec (IArr a) :: Type Source #

Finite2 (Manifest a) Source #

Treated as a row vector

Instance details

Defined in Feldspar.Data.Vector

Syntax a => Storable (Manifest2 a) Source # 
Instance details

Defined in Feldspar.Data.Storable

Associated Types

type StoreRep (Manifest2 a) :: Type Source #

type StoreSize (Manifest2 a) :: Type Source #

Syntax a => Storable (Manifest a) Source # 
Instance details

Defined in Feldspar.Data.Storable

Associated Types

type StoreRep (Manifest a) :: Type Source #

type StoreSize (Manifest a) :: Type Source #

ViewManifest2 (Manifest2 a) a Source # 
Instance details

Defined in Feldspar.Data.Vector

ViewManifest (Manifest a) a Source # 
Instance details

Defined in Feldspar.Data.Vector

Syntax a => Pully2 (Manifest a) a Source #

Convert to a Pull2 with a single row

Instance details

Defined in Feldspar.Data.Vector

Methods

toPull2 :: Manifest a -> Pull2 a Source #

type IndexedElem (IArr a) Source # 
Instance details

Defined in Feldspar.Frontend

type IndexedElem (IArr a) = a
type HaskellRep (IArr a) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (IArr a) = [Internal a]
type SizeSpec (IArr a) Source # 
Instance details

Defined in Feldspar.Data.Vector

type StoreRep (Manifest2 a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreRep (Manifest a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreRep (Manifest a) = (DRef Length, Arr a)
type StoreSize (Manifest2 a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreSize (Manifest a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type DIArr a = IArr (Data a) Source #

Immutable array specialized to Data elements

unsafeEqArrIArr :: Arr a -> IArr a -> Bool Source #

Check if an Arr and and IArr use the same physical array. The length and offset are ignored. This operation may give false negatives, but never false positives. Whether or not false negatives occur may also depend on the interpretation of the program.

Due to this unreliability, the function should only be used to affect the non-functional properties of a program (e.g. to avoid unnecessary array copying).

Pure expressions

data AssertionLabel Source #

Assertion labels

Constructors

InternalAssertion

Internal assertion to guarantee meaningful results

LibraryAssertion String

Assertion related to a specific library

UserAssertion String

Assertion in user code. The default label for user assertions is UserAssertion ""

onlyUserAssertions :: Selection AssertionLabel Source #

A selection that includes all labels defined as UserAssertion

data ExtraPrimitive sig where Source #

Instances
Eval ExtraPrimitive Source # 
Instance details

Defined in Feldspar.Representation

Methods

evalSym :: ExtraPrimitive sig -> Denotation sig #

Equality ExtraPrimitive Source # 
Instance details

Defined in Feldspar.Representation

Render ExtraPrimitive Source # 
Instance details

Defined in Feldspar.Representation

StringTree ExtraPrimitive Source # 
Instance details

Defined in Feldspar.Representation

Symbol ExtraPrimitive Source # 
Instance details

Defined in Feldspar.Representation

Methods

symSig :: ExtraPrimitive sig -> SigRep sig #

EvalEnv ExtraPrimitive env Source # 
Instance details

Defined in Feldspar.Representation

Methods

compileSym :: proxy env -> ExtraPrimitive sig -> DenotationM (Reader env) sig #

data ForLoop sig where Source #

For loop

Constructors

ForLoop :: Type st => ForLoop (Length :-> (st :-> ((Index -> st -> st) :-> Full st))) 
Instances
Eval ForLoop Source # 
Instance details

Defined in Feldspar.Representation

Methods

evalSym :: ForLoop sig -> Denotation sig #

Equality ForLoop Source # 
Instance details

Defined in Feldspar.Representation

Methods

equal :: ForLoop a -> ForLoop b -> Bool #

hash :: ForLoop a -> Hash #

Render ForLoop Source # 
Instance details

Defined in Feldspar.Representation

Methods

renderSym :: ForLoop sig -> String #

renderArgs :: [String] -> ForLoop sig -> String #

StringTree ForLoop Source # 
Instance details

Defined in Feldspar.Representation

Symbol ForLoop Source # 
Instance details

Defined in Feldspar.Representation

Methods

symSig :: ForLoop sig -> SigRep sig #

EvalEnv ForLoop env Source # 
Instance details

Defined in Feldspar.Representation

Methods

compileSym :: proxy env -> ForLoop sig -> DenotationM (Reader env) sig #

data Unsafe sig where Source #

Interaction with the IO layer

Constructors

UnsafePerform :: Comp (Data a) -> Unsafe (Full a) 
Instances
Eval Unsafe Source # 
Instance details

Defined in Feldspar.Representation

Methods

evalSym :: Unsafe sig -> Denotation sig #

Equality Unsafe Source #

equal always returns False

Instance details

Defined in Feldspar.Representation

Methods

equal :: Unsafe a -> Unsafe b -> Bool #

hash :: Unsafe a -> Hash #

Render Unsafe Source # 
Instance details

Defined in Feldspar.Representation

Methods

renderSym :: Unsafe sig -> String #

renderArgs :: [String] -> Unsafe sig -> String #

StringTree Unsafe Source # 
Instance details

Defined in Feldspar.Representation

Symbol Unsafe Source # 
Instance details

Defined in Feldspar.Representation

Methods

symSig :: Unsafe sig -> SigRep sig #

EvalEnv Unsafe env Source # 
Instance details

Defined in Feldspar.Representation

Methods

compileSym :: proxy env -> Unsafe sig -> DenotationM (Reader env) sig #

newtype Data a Source #

Constructors

Data 

Fields

Instances
FreeExp Data Source # 
Instance details

Defined in Feldspar.Representation

Associated Types

type FreePred Data :: Type -> Constraint #

Methods

constExp :: FreePred Data a => a -> Data a #

varExp :: FreePred Data a => VarId -> Data a #

EvalExp Data Source # 
Instance details

Defined in Feldspar.Representation

Methods

evalExp :: Data a -> a #

(Bounded a, Type a) => Bounded (Data a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

minBound :: Data a #

maxBound :: Data a #

(Floating a, PrimType a) => Floating (Data a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

pi :: Data a #

exp :: Data a -> Data a #

log :: Data a -> Data a #

sqrt :: Data a -> Data a #

(**) :: Data a -> Data a -> Data a #

logBase :: Data a -> Data a -> Data a #

sin :: Data a -> Data a #

cos :: Data a -> Data a #

tan :: Data a -> Data a #

asin :: Data a -> Data a #

acos :: Data a -> Data a #

atan :: Data a -> Data a #

sinh :: Data a -> Data a #

cosh :: Data a -> Data a #

tanh :: Data a -> Data a #

asinh :: Data a -> Data a #

acosh :: Data a -> Data a #

atanh :: Data a -> Data a #

log1p :: Data a -> Data a #

expm1 :: Data a -> Data a #

log1pexp :: Data a -> Data a #

log1mexp :: Data a -> Data a #

(Fractional a, PrimType a) => Fractional (Data a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

(/) :: Data a -> Data a -> Data a #

recip :: Data a -> Data a #

fromRational :: Rational -> Data a #

(Num a, PrimType a) => Num (Data a) Source # 
Instance details

Defined in Feldspar.Frontend

Methods

(+) :: Data a -> Data a -> Data a #

(-) :: Data a -> Data a -> Data a #

(*) :: Data a -> Data a -> Data a #

negate :: Data a -> Data a #

abs :: Data a -> Data a #

signum :: Data a -> Data a #

fromInteger :: Integer -> Data a #

Syntactic (Data a) Source #

Declaring Data as syntactic sugar

Instance details

Defined in Feldspar.Representation

Associated Types

type Domain (Data a) :: Type -> Type #

type Internal (Data a) :: Type #

Methods

desugar :: Data a -> ASTF (Domain (Data a)) (Internal (Data a)) #

sugar :: ASTF (Domain (Data a)) (Internal (Data a)) -> Data a #

MarshalFeld (Data Double) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Double) :: Type Source #

MarshalFeld (Data Float) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Float) :: Type Source #

MarshalFeld (Data Int8) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Int8) :: Type Source #

MarshalFeld (Data Int16) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Int16) :: Type Source #

MarshalFeld (Data Int32) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Int32) :: Type Source #

MarshalFeld (Data Int64) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Int64) :: Type Source #

MarshalFeld (Data Word8) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Word8) :: Type Source #

MarshalFeld (Data Word16) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Word16) :: Type Source #

MarshalFeld (Data Word32) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Word32) :: Type Source #

MarshalFeld (Data Word64) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data Word64) :: Type Source #

MarshalFeld (Data (Complex Double)) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data (Complex Double)) :: Type Source #

MarshalFeld (Data (Complex Float)) Source # 
Instance details

Defined in Feldspar.Run.Marshal

Associated Types

type HaskellRep (Data (Complex Float)) :: Type Source #

PrimType' a => BulkTransferable (Data a) Source # 
Instance details

Defined in Feldspar.Run.Concurrent

Associated Types

type ContainerType (Data a) :: Type Source #

PrimType' a => Transferable (Data a) Source # 
Instance details

Defined in Feldspar.Run.Concurrent

Associated Types

type SizeSpec (Data a) :: Type Source #

Type a => Storable (Data a) Source # 
Instance details

Defined in Feldspar.Data.Storable

Associated Types

type StoreRep (Data a) :: Type Source #

type StoreSize (Data a) :: Type Source #

Methods

newStoreRep :: MonadComp m => proxy (Data a) -> StoreSize (Data a) -> m (StoreRep (Data a)) Source #

initStoreRep :: MonadComp m => Data a -> m (StoreRep (Data a)) Source #

readStoreRep :: MonadComp m => StoreRep (Data a) -> m (Data a) Source #

unsafeFreezeStoreRep :: MonadComp m => StoreRep (Data a) -> m (Data a) Source #

writeStoreRep :: MonadComp m => StoreRep (Data a) -> Data a -> m () Source #

Type a => Forcible (Data a) Source # 
Instance details

Defined in Feldspar.Data.Storable

Associated Types

type ValueRep (Data a) :: Type Source #

Methods

toValue :: MonadComp m => Data a -> m (ValueRep (Data a)) Source #

fromValue :: ValueRep (Data a) -> Data a Source #

(Formattable a, PrimType a, PrintfType r) => PrintfType (Data a -> r) Source # 
Instance details

Defined in Feldspar.Run.Frontend

Methods

fprf :: Handle -> String -> [PrintfArg Data] -> Data a -> r Source #

Syntactic (Struct PrimType' Data a) Source # 
Instance details

Defined in Feldspar.Representation

Associated Types

type Domain (Struct PrimType' Data a) :: Type -> Type #

type Internal (Struct PrimType' Data a) :: Type #

type FreePred Data Source # 
Instance details

Defined in Feldspar.Representation

type Internal (Data a) Source # 
Instance details

Defined in Feldspar.Representation

type Internal (Data a) = a
type Domain (Data a) Source # 
Instance details

Defined in Feldspar.Representation

type HaskellRep (Data Double) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Float) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Int8) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Int16) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Int32) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Int64) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Word8) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Word16) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Word32) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data Word64) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data (Complex Double)) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type HaskellRep (Data (Complex Float)) Source # 
Instance details

Defined in Feldspar.Run.Marshal

type ContainerType (Data a) Source # 
Instance details

Defined in Feldspar.Run.Concurrent

type ContainerType (Data a) = DArr a
type SizeSpec (Data a) Source # 
Instance details

Defined in Feldspar.Run.Concurrent

type StoreRep (Data a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreRep (Data a) = DRef a
type StoreSize (Data a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreSize (Data a) = ()
type ValueRep (Data a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type ValueRep (Data a) = Data a
type Internal (Struct PrimType' Data a) Source # 
Instance details

Defined in Feldspar.Representation

type Domain (Struct PrimType' Data a) Source # 
Instance details

Defined in Feldspar.Representation

class (Syntactic a, Domain a ~ FeldDomain, Type (Internal a)) => Syntax a Source #

Specialization of the Syntactic class for the Feldspar domain

Instances
(Syntactic a, Domain a ~ FeldDomain, Type (Internal a)) => Syntax a Source # 
Instance details

Defined in Feldspar.Representation

sugarSymFeld :: (Signature sig, fi ~ SmartFun FeldDomain sig, sig ~ SmartSig fi, FeldDomain ~ SmartSym fi, SyntacticN f fi, sub :<: FeldConstructs, Type (DenResult sig)) => sub sig -> f Source #

Make a smart constructor for a symbol

sugarSymFeldPrim :: (Signature sig, fi ~ SmartFun FeldDomain sig, sig ~ SmartSig fi, FeldDomain ~ SmartSym fi, SyntacticN f fi, sub :<: FeldConstructs, PrimType' (DenResult sig)) => sub sig -> f Source #

Make a smart constructor for a symbol

eval :: (Syntactic a, Domain a ~ FeldDomain) => a -> Internal a Source #

Evaluate a closed expression

Monadic computations

data AssertCMD fs a where Source #

Constructors

Assert :: AssertionLabel -> exp Bool -> String -> AssertCMD (Param3 prog exp pred) () 
Instances
HFunctor (AssertCMD :: (k -> Type, (Type -> Type, (k2, Type))) -> Type -> Type) Source # 
Instance details

Defined in Feldspar.Representation

Methods

hfmap :: (forall (b :: k0). f b -> g b) -> AssertCMD (f, fs) a -> AssertCMD (g, fs) a #

HBifunctor (AssertCMD :: (Type -> Type, (Type -> Type, (k2, Type))) -> Type -> Type) Source # 
Instance details

Defined in Feldspar.Representation

Methods

hbimap :: (Functor f, Functor g) => (forall b. f b -> g b) -> (forall (b :: k). i b -> j b) -> AssertCMD (f, (i, fs)) a -> AssertCMD (g, (j, fs)) a #

ControlCMD :<: instr => Reexpressible (AssertCMD :: (Type -> Type, (Type -> Type, (Type -> Constraint, Type))) -> Type -> Type) (instr :: (Type -> Type, (Type -> Type, (Type -> Constraint, Type))) -> Type -> Type) Env Source # 
Instance details

Defined in Feldspar.Run.Compile

Methods

reexpressInstrEnv :: Monad m => (forall (b :: k). exp1 b -> ReaderT Env (ProgramT instr (exp2, fs) m) (exp2 b)) -> AssertCMD (ReaderT Env (ProgramT instr (exp2, fs) m), (exp1, fs)) a -> ReaderT Env (ProgramT instr (exp2, fs) m) a #

InterpBi (AssertCMD :: (Type -> Type, (Type -> Type, (Type -> Constraint, Type))) -> Type -> Type) IO (Param1 PrimType') Source # 
Instance details

Defined in Feldspar.Representation

Methods

interpBi :: AssertCMD (IO, (IO, Param1 PrimType')) a -> IO a #

newtype Comp a Source #

Monad for computational effects: mutable data structures and control flow

Constructors

Comp 
Instances
Monad Comp Source # 
Instance details

Defined in Feldspar.Representation

Methods

(>>=) :: Comp a -> (a -> Comp b) -> Comp b #

(>>) :: Comp a -> Comp b -> Comp b #

return :: a -> Comp a #

fail :: String -> Comp a #

Functor Comp Source # 
Instance details

Defined in Feldspar.Representation

Methods

fmap :: (a -> b) -> Comp a -> Comp b #

(<$) :: a -> Comp b -> Comp a #

Applicative Comp Source # 
Instance details

Defined in Feldspar.Representation

Methods

pure :: a -> Comp a #

(<*>) :: Comp (a -> b) -> Comp a -> Comp b #

liftA2 :: (a -> b -> c) -> Comp a -> Comp b -> Comp c #

(*>) :: Comp a -> Comp b -> Comp b #

(<*) :: Comp a -> Comp b -> Comp a #

MonadComp Comp Source # 
Instance details

Defined in Feldspar.Frontend

Methods

liftComp :: Comp a -> Comp a Source #

iff :: Data Bool -> Comp () -> Comp () -> Comp () Source #

for :: (Integral n, PrimType n) => IxRange (Data n) -> (Data n -> Comp ()) -> Comp () Source #

while :: Comp (Data Bool) -> Comp () -> Comp () Source #

MonadRun Comp Source # 
Instance details

Defined in Feldspar.Run.Representation

Methods

liftRun :: Comp a -> Run a Source #

Syntax a => Storable (Push Comp a) Source # 
Instance details

Defined in Feldspar.Data.Storable

Associated Types

type StoreRep (Push Comp a) :: Type Source #

type StoreSize (Push Comp a) :: Type Source #

type StoreRep (Push Comp a) Source # 
Instance details

Defined in Feldspar.Data.Storable

type StoreRep (Push Comp a) = (DRef Length, Arr a)
type StoreSize (Push Comp a) Source # 
Instance details

Defined in Feldspar.Data.Storable