Safe Haskell | None |
---|
The Ox monad facilitates writing functional expressions over the input sentence with arbitrary type of sentence token.
- type Ox t w a = WriterT [(Id, w)] (State Id) a
- type Id = [Int]
- atWith :: Vector t -> (t -> a) -> Int -> Maybe a
- atsWith :: Vector t -> (t -> [a]) -> Int -> [a]
- save :: Maybe w -> Ox t w ()
- saves :: [w] -> Ox t w ()
- when :: Bool -> Ox t w a -> Ox t w (Maybe a)
- whenJT :: Maybe Bool -> Ox t w a -> Ox t w (Maybe a)
- group :: Ox t w a -> Ox t w a
- execOx :: Ox t w a -> [(Id, w)]
Types
type Ox t w a = WriterT [(Id, w)] (State Id) aSource
The Ox is a monad stack with observation type identifier handled by the state monad and the resulting observation values paired with identifiers printed using the writer monad.
Observation type identifier. It consists of a list of integers, each integer representing a state of the Ox monad on the particular level.
Functions
atWith :: Vector t -> (t -> a) -> Int -> Maybe aSource
Value of the 't -> a' function with respect to the given sentence and sentence position. Return Nothing if the position is out of bounds.
atsWith :: Vector t -> (t -> [a]) -> Int -> [a]Source
Value of the 't -> [a]' function with respect to the given sentence and sentence position. Return empty list if the position is out of bounds.
when :: Bool -> Ox t w a -> Ox t w (Maybe a)Source
Perform the Ox action only when the cond
is True. It works like
the standard when
function but also changes the current
identifier value.
whenJT :: Maybe Bool -> Ox t w a -> Ox t w (Maybe a)Source
Perform the action only when the given condition is equal to Just True.
group :: Ox t w a -> Ox t w aSource
Make all embedded observations to be indistinguishable with respect to their top-most identifier components. TODO: Perhaps should set only the current level, not the deeper ones.