Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
This module defines a convenience monad/typeclass for creating normalised programs.
Synopsis
- data BinderT lore m a
- runBinderT :: MonadFreshNames m => BinderT lore m a -> Scope lore -> m (a, Stms lore)
- runBinderT_ :: MonadFreshNames m => BinderT lore m a -> Scope lore -> m (Stms lore)
- runBinderT' :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => BinderT lore m a -> m (a, Stms lore)
- runBinderT'_ :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => BinderT lore m a -> m (Stms lore)
- class ASTLore lore => BinderOps lore where
- mkExpDecB :: (MonadBinder m, Lore m ~ lore) => Pattern lore -> Exp lore -> m (ExpDec lore)
- mkBodyB :: (MonadBinder m, Lore m ~ lore) => Stms lore -> Result -> m (Body lore)
- mkLetNamesB :: (MonadBinder m, Lore m ~ lore) => [VName] -> Exp lore -> m (Stm lore)
- type Binder lore = BinderT lore (State VNameSource)
- runBinder :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore a -> m (a, Stms lore)
- runBinder_ :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore a -> m (Stms lore)
- joinBinder :: MonadBinder m => Binder (Lore m) a -> m a
- runBodyBinder :: (Bindable lore, MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore (Body lore) -> m (Body lore)
- addBinderStms :: Monad m => Stms lore -> BinderT lore m ()
- collectBinderStms :: Monad m => BinderT lore m a -> BinderT lore m (a, Stms lore)
- module Futhark.Binder.Class
A concrete MonadBinder
monad.
data BinderT lore m a Source #
Instances
runBinderT :: MonadFreshNames m => BinderT lore m a -> Scope lore -> m (a, Stms lore) Source #
runBinderT_ :: MonadFreshNames m => BinderT lore m a -> Scope lore -> m (Stms lore) Source #
runBinderT' :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => BinderT lore m a -> m (a, Stms lore) Source #
runBinderT'_ :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => BinderT lore m a -> m (Stms lore) Source #
class ASTLore lore => BinderOps lore where Source #
Nothing
mkExpDecB :: (MonadBinder m, Lore m ~ lore) => Pattern lore -> Exp lore -> m (ExpDec lore) Source #
default mkExpDecB :: (MonadBinder m, Bindable lore) => Pattern lore -> Exp lore -> m (ExpDec lore) Source #
mkBodyB :: (MonadBinder m, Lore m ~ lore) => Stms lore -> Result -> m (Body lore) Source #
mkLetNamesB :: (MonadBinder m, Lore m ~ lore) => [VName] -> Exp lore -> m (Stm lore) Source #
default mkLetNamesB :: (MonadBinder m, Lore m ~ lore, Bindable lore) => [VName] -> Exp lore -> m (Stm lore) Source #
Instances
runBinder :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore a -> m (a, Stms lore) Source #
runBinder_ :: (MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore a -> m (Stms lore) Source #
Like runBinder
, but throw away the result and just return the
added bindings.
joinBinder :: MonadBinder m => Binder (Lore m) a -> m a Source #
runBodyBinder :: (Bindable lore, MonadFreshNames m, HasScope somelore m, SameScope somelore lore) => Binder lore (Body lore) -> m (Body lore) Source #
Non-class interface
The MonadBinder
typeclass
module Futhark.Binder.Class