regexdot- A polymorphic, POSIX, extended regex-engine.

Safe HaskellSafe




Dr. Alistair Ward
  • Define the requirements & capabilities of a data-type which is designed to consume data.
  • This module also facilitates investigation of group-behaviour, by defining operations on either concatenations or alternations of Consumers.
  • This module is specifically for use in a regex-engine, in which the meta-data from which the regex is composed, are considered to consume input data, whilst concatenation & alternation of such elements, behave as a different types of groups of consumer.



class Consumer c where Source #

  • The interface, to which types, which have a data-requirement, may conform.
  • Regrettably, methods requiring reference to the type of the consumable, would require multi-parameter type-classes.
  • consumptionProfile defines the quantity-range of data which may be consumed, & any specific data-requirements.
  • starHeight measures the complexity of the Consumer.

Minimal complete definition

consumptionProfile, starHeight




accumulateConsumptionProfiles :: Consumer c => [c] -> AccumulatedConsumptionProfiles Source #

Get the ConsumptionProfile for the specified list of Consumers, then accumulate them.

aggregateConsumptionProfilesFromAlternatives :: Consumer c => [c] -> ConsumptionProfile Source #

The aggregate of the specified alternation of ConsumptionProfiles.

aggregateConsumptionProfilesFromConcatenation :: Consumer c => [c] -> ConsumptionProfile Source #

Get the ConsumptionProfiles for the specified list of Consumers, then find the net effect of concatenating them.


getConsumptionBounds :: Consumer c => c -> ConsumptionBounds Source #

Convenience-function, to query the ConsumptionBounds of a Consumer.

getFewest :: Consumer c => c -> DataLength Source #

Determine the minimum acceptable quantity of data.

getHasSpecificRequirement :: Consumer c => c -> Bool Source #

Determine whether the specified Consumer, has a specific requirement.