definitive-parser-2.1: A parser combinator library for the Definitive framework

Safe HaskellNone
LanguageHaskell2010

Data.Syntax

Documentation

newtype Lambda n m Source

Constructors

Lambda (Maybe String, ThunkT n m () -> ThunkT n m ()) 

Instances

MonadFree (n (Lambda n m)) (SyntaxT n m) 
Show (Lambda n m) 
Semigroup (Lambda n m) 

class (Foldable (n (Lambda n m)), Traversable (n (Lambda n m))) => NodeFunctor n m Source

Instances

Eq k => NodeFunctor (Node k) m 

newtype SyntaxT n m a Source

Constructors

SyntaxT (Free (n (Lambda n m)) a) 

Instances

MonadFree (n (Lambda n m)) (SyntaxT n m) 
NodeFunctor n m => Functor (SyntaxT n m) 
NodeFunctor n m => Applicative (SyntaxT n m) 
NodeFunctor n m => Monad (SyntaxT n m) 
NodeFunctor n m => Foldable (SyntaxT n m) 
NodeFunctor n m => Traversable (SyntaxT n m) 
Unit (SyntaxT n m) 
(NodeFunctor n m, Monad m) => MonadFree ((:.:) m (SyntaxT n m)) (ThunkT n m) 

newtype ThunkT n m a Source

Constructors

ThunkT (Free (m :.: SyntaxT n m) a) 

Instances

(NodeFunctor n m, MonadState s m) => MonadState s (ThunkT n m) 
(NodeFunctor n m, MonadReader r m) => MonadReader r (ThunkT n m) 
(NodeFunctor n m, MonadWriter w m) => MonadWriter w (ThunkT n m) 
(NodeFunctor n m, Functor m) => Functor (ThunkT n m) 
(NodeFunctor n m, Functor m) => Applicative (ThunkT n m) 
(NodeFunctor n m, Monad m) => Monad (ThunkT n m) 
(NodeFunctor n m, Foldable m) => Foldable (ThunkT n m) 
(NodeFunctor n m, Traversable m) => Traversable (ThunkT n m) 
Unit (ThunkT n m) 
(NodeFunctor n m, Monad m) => MonadFree ((:.:) m (SyntaxT n m)) (ThunkT n m) 

type Thunk n a = ThunkT n Id a Source

type NodeT n m a = n (Lambda n m) (ThunkT n m a) Source

force :: (NodeFunctor n m, Monad m) => ThunkT n m a -> ThunkT n m (NodeT n m a) Source

forcing :: (NodeFunctor n m, Monad m) => (NodeT n m a -> ThunkT n m a) -> ThunkT n m a -> ThunkT n m a Source

liftN :: (NodeFunctor n m, Unit m) => NodeT n m a -> SyntaxT n m (ThunkT n m a) Source

liftS :: (NodeFunctor n m, Unit m) => SyntaxT n m (ThunkT n m a) -> ThunkT n m a Source

liftNS :: (NodeFunctor n m, Unit m) => NodeT n m a -> ThunkT n m a Source