Query module defines a type for "queries" on diagrams, which
are functions from points in a vector space to some monoid.
A query is a function that maps points in a vector space to values in some monoid. Queries naturally form a monoid, with two queries being combined pointwise.
The idea for annotating diagrams with monoidal queries came from the graphics-drawingcombinators package, http://hackage.haskell.org/package/graphics-drawingcombinators.
|Functor (Query v)|
|Functor (Query v) => Applicative (Query v)|
|Monoid m => Monoid (Query v m)|
|Semigroup m => Semigroup (Query v m)|
|(VectorSpace (V (Query v m)), VectorSpace v) => HasOrigin (Query v m)|
|(HasLinearMap (V (Query v m)), HasLinearMap v) => Transformable (Query v m)|
|Newtype (QDiagram b v m) (DUALTree (DownAnnots v) (UpAnnots b v m) () (Prim b v))|