incremental-parser-0.4.0.1: Generic parser library capable of providing partial results from partial input.

Safe HaskellSafe
LanguageHaskell2010

Control.Applicative.Monoid

Description

This module defines the MonoidApplicative and MonoidAlternative type classes. Their methods are specialized forms of the standard Applicative and Alternative class methods. Instances of these classes should override the default method implementations with more efficient ones.

Documentation

class Applicative f => MonoidApplicative f where Source #

Minimal complete definition

Nothing

Methods

(+<*>) :: f (a -> a) -> f a -> f a infixl 4 Source #

A variant of the Applicative's <*> operator specialized for endomorphic functions.

(><) :: Semigroup a => f a -> f a -> f a infixl 5 Source #

Lifted and potentially optimized monoid mappend operation from the parameter type.

Instances
Monoid s => MonoidApplicative (Parser t s) Source #

The +<*> operator is specialized to return incremental parsing results.

Instance details

Defined in Text.ParserCombinators.Incremental

Methods

(+<*>) :: Parser t s (a -> a) -> Parser t s a -> Parser t s a Source #

(><) :: Semigroup a => Parser t s a -> Parser t s a -> Parser t s a Source #

class (Alternative f, MonoidApplicative f) => MonoidAlternative f where Source #

Minimal complete definition

Nothing

Methods

moptional :: (Semigroup a, Monoid a) => f a -> f a Source #

Like optional, but restricted to Monoid results.

concatMany :: (Semigroup a, Monoid a) => f a -> f a Source #

Zero or more argument occurrences like many, but concatenated.

concatSome :: (Semigroup a, Monoid a) => f a -> f a Source #

One or more argument occurrences like some, but concatenated.

Instances
(Alternative (Parser t s), Monoid s) => MonoidAlternative (Parser t s) Source # 
Instance details

Defined in Text.ParserCombinators.Incremental

Methods

moptional :: (Semigroup a, Monoid a) => Parser t s a -> Parser t s a Source #

concatMany :: (Semigroup a, Monoid a) => Parser t s a -> Parser t s a Source #

concatSome :: (Semigroup a, Monoid a) => Parser t s a -> Parser t s a Source #