Feldspar.Core.Constructs.Loop

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

Safe Haskell | None

Feldspar.Core.Constructs.Loop

# Documentation

data LoopM m a where

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 => EvalBind (LoopM m) |
Monad m => Semantic (LoopM m) |
Monad m => Eval (LoopM m) |
Monad m => Render (LoopM m) |
Monad m => ToTree (LoopM m) |
Monad m => Equality (LoopM m) |
SizeProp (LoopM m) |
Sharable (LoopM m) |
(MonadType m, :<: (LoopM m) dom, :<: (CLambda Type) dom, Optimize dom dom) => Optimize (LoopM m) dom |
(AlphaEq dom dom dom env, Monad m) => AlphaEq (LoopM m) (LoopM m) dom env |

data Loop a where

Constructors

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

Instances

EvalBind Loop |
Semantic Loop |
Eval Loop |
Render Loop |
ToTree Loop |
Equality 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, OptimizeSuper dom) => Optimize (:|| Loop Type) dom |