feldspar-language-0.7: A functional embedded language for DSP and parallelism

Safe HaskellNone

Feldspar.Core.Constructs.Loop

Documentation

data LoopM m a whereSource

Constructors

While :: Size (m ()) ~ AnySize => LoopM m (m Bool :-> (m a :-> Full (m ()))) 
For :: Size (m ()) ~ AnySize => LoopM m (Length :-> ((Index -> m a) :-> Full (m ()))) 

Instances

Monad m => Semantic (LoopM m) 
Monad m => StringTree (LoopM m) 
Monad m => Render (LoopM m) 
Monad m => Eval (LoopM m) 
Monad m => Equality (LoopM m) 
Monad m => EvalBind (LoopM m) 
Monotonic (LoopM m) 
SizeProp (LoopM m) 
Sharable (LoopM m) 
(:<: (LoopM Mut) dom, :<: (:|| Variable Type) dom, :<: (CLambda Type) dom, :<: (MONAD Mut) dom, :<: MutableReference dom, :<: Let dom, Optimize (CLambda Type) dom, Optimize (MONAD Mut) dom, Optimize dom dom) => Optimize (LoopM Mut) dom 
(AlphaEq dom dom dom env, Monad m) => AlphaEq (LoopM m) (LoopM m) dom env 

data Loop a whereSource

Constructors

ForLoop :: Type a => Loop (Length :-> (a :-> ((Index -> a -> a) :-> Full a))) 
WhileLoop :: Type a => Loop (a :-> ((a -> Bool) :-> ((a -> a) :-> Full a))) 

Instances

Semantic Loop 
StringTree Loop 
Render Loop 
Eval Loop 
Equality Loop 
EvalBind Loop 
Monotonic Loop 
Sharable Loop 
AlphaEq dom dom dom env => AlphaEq Loop Loop dom env 
SizeProp (:|| Loop Type) 
(:<: (:|| Literal Type) dom, :<: (:|| Loop Type) dom, :<: (:|| Variable Type) dom, :<: (CLambda Type) dom, :<: Let dom, OptimizeSuper dom) => Optimize (:|| Loop Type) dom