monad-ox-0.3.0: Monad for observation extraction

Safe HaskellNone

Control.Monad.Ox

Contents

Description

The Ox monad facilitates writing functional expressions over the input sentence with arbitrary type of sentence token.

Synopsis

Types

type Ox o a = WriterT [(Id, o)] (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.

type Id = [Int]Source

Observation type identifier. It consists of a list of integers, each integer representing a state of the Ox monad on the particular level.

Functions

save :: Maybe o -> Ox o ()Source

Save the observation value.

saves :: [o] -> Ox o ()Source

Save observation values in the writer monad of the Ox stack.

when :: Bool -> Ox o a -> Ox o (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 o a -> Ox o (Maybe a)Source

Perform the action only when the given condition is equal to Just True.

group :: Ox o a -> Ox o 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.

Ox monad execution

execOx :: Ox o a -> [(Id, o)]Source

Execute the Ox monad and retrieve the saved (with the save and saves functions) results.

Utilities

atWith :: Vector a -> (a -> b) -> Int -> Maybe bSource

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 a -> (a -> [b]) -> Int -> [b]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.