-- | Interpreter to compute a host-term. module Language.Symantic.Repr.Host where -- * Type 'Repr_Host' -- | Interpreter's data. newtype Repr_Host h = Repr_Host { unRepr_Host :: h } instance Functor Repr_Host where fmap f (Repr_Host a) = Repr_Host (f a) instance Applicative Repr_Host where pure = Repr_Host (Repr_Host f) <*> (Repr_Host a) = Repr_Host (f a) instance Monad Repr_Host where return = Repr_Host (Repr_Host a) >>= f = f a -- | Interpreter. host_from_expr :: Repr_Host h -> h host_from_expr = unRepr_Host