Strafunski-StrategyLib-5.0.0.3: Library for strategic programming

Portabilityportable
Stabilityexperimental
MaintainerRalf Laemmel, Joost Visser
Safe HaskellNone

Data.Generics.Strafunski.StrategyLib.MetricsTheme

Contents

Description

This module is part of StrategyLib, a library of functional strategy combinators, including combinators for generic traversal. This module defines combinators to define metrics extractors.

Synopsis

An abstract datatype for metrics

type Metrics = MetricName -> IntegerSource

The type of metrics

type MetricName = StringSource

The type of metric names

initMetrics :: Integer -> MetricsSource

Create Metrics with given initial value for all metrics.

initMetrics0 :: MetricsSource

Create Metrics with 0 as initial value for all metrics.

incMetrics :: MetricName -> Integer -> Metrics -> MetricsSource

Create Metrics with initTypeMetrics :: MetricName -> a -> Metrics initTypeMetrics key _ = incMetrics1 key initMetrics0

Increment metric with the given name with the given value.

incMetrics1 :: MetricName -> Metrics -> MetricsSource

Increment metric with the given name by 1.

putMetricLn :: MetricName -> Metrics -> IO ()Source

Print value of metric with the given name.

Metrics as monoids

Strategy combinators for metrics

typeMetricSource

Arguments

:: (MonadPlus m, Term a) 
=> TU Metrics m

Metric collecting strategy

-> (MetricName, a -> ())

Name of the metric and type guard

-> TU Metrics m

Strategy that additionally collects type-based metrics

Additionally collect type-based metrics.

Generic metric algorithms

depthWithSource

Arguments

:: MonadPlus m 
=> TU () m

Recognize relevant contructs

-> TU Int m

Count nesting depth of relevant constructs.

Generic algorithm for computing nesting depth