Attributes.Notations
Notations to combine attributes.
Attributes form a monad. a1 >>= f means f will be run on the flags transformed by a1 and using the value produced by a1. The trivial attribute return x does no action on the flags.
a1 >>= f
f
a1
return x
include Monad.Def with type 'a t = 'a attribute
type 'a t = 'a attribute
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>>) : unit t -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
The monadic laws must hold:
(x>>=f)>>=g
x>>=fun x' -> (f x'>>=g)
return a >>= f
f a
x>>=return
x
As well as the following identities:
x >> y
x >>= fun () -> y
map f x
x >>= fun x' -> f x'
val (++) : 'a attribute -> 'b attribute -> ('a * 'b) attribute
Combine 2 attributes. If any keys are in common an error will be raised.