|
System.Console.CmdArgs.Annotate |
|
|
|
|
Description |
This module captures annotations on a value, and builds a Capture value.
This module has two ways of writing annotations:
Impure: The impure method of writing annotations is susceptible to over-optimisation by GHC
- sometimes {-# OPTIONS_GHC -fno-cse #-} will be required.
Pure: The pure method is more verbose, and lacks some type safety.
As an example of the two styles:
data Foo = Foo {foo :: Int, bar :: Int}
impure = capture $ Foo {foo = 12, bar = many [1 &= "inner", 2]} &= "top" pure = capture_ $ record Foo{} [foo := 12, bar :=+ [atom 1 += "inner", atom 2]] += "top" Both evaluate to:
Capture (Ann "top") (Ctor (Foo 12 1) [Value 12, Many [Ann "inner" (Value 1), Value 2]]
|
|
Synopsis |
|
|
|
|
Capture framework
|
|
|
The result of capturing some annotations.
| Constructors | | Instances | |
|
|
|
Any value, with a Data dictionary.
| Constructors | forall a . Data a => Any a | |
| Instances | |
|
|
|
Return the value inside a capture.
|
|
|
Remove all Missing values by using any previous instances as default values
|
|
Impure
|
|
|
Capture a value. Note that if the value is evaluated
more than once the result may be different, i.e.
capture x /= capture x
|
|
|
Collapse multiple values in to one.
|
|
|
Add an annotation to a value.
It is recommended that anyone making use of this function redefine
it with a more restrictive type signature to control the type of the
annotation (the second argument). Any redefinitions of this function
should add an INLINE pragma, to reduce the chance of incorrect
optimisations.
|
|
Pure
|
|
|
Capture the annotations from an annotated value.
|
|
|
Collapse many annotated values in to one.
|
|
|
Add an annotation to a value.
|
|
|
Lift a pure value to an annotation.
|
|
|
Create a constructor/record. The first argument should be
the type of field, the second should be a list of fields constructed
originally defined by := or :=+.
This operation is not type safe, and may raise an exception at runtime
if any field has the wrong type or label.
|
|
|
This type represents an annotated value. The type of the underlying value is not specified.
| Constructors | forall c f . (Data c, Data f) => (c -> f) := f | Construct a field, fieldname := value.
| forall c f . (Data c, Data f) => (c -> f) :=+ [Annotate ann] | Add annotations to a field.
|
|
|
|
Produced by Haddock version 2.6.0 |