The elementary base types and classes.
- class OPlus t where
- oplus :: t -> t -> t
- oconcat :: OPlus t => t -> [t] -> t
- class Bimap f where
- replaceL :: Bimap f => p -> f a b -> f p b
- replaceR :: Bimap f => q -> f a b -> f a q
- data HAlign
- data VAlign
- data Cardinal
- type AdvanceVec u = Vec2 u
- advanceH :: AdvanceVec u -> u
- advanceV :: AdvanceVec u -> u
- type family MonUnit m :: *
- class Monad m => PointSupplyM m where
A semigroup class
A Semigroup class.
The perhaps unusual name is the TeX name for the circled plus glyph. It would be nice if there was a semigroup class in the Haskell Base libraries...
|OPlus (Primitive u)|
|Ord u => OPlus (BoundingBox u)|
|Num u => OPlus (Vec2 u)|
|OPlus (UNil u)|
|OPlus a => OPlus (CF a)|
|OPlus (PrimGraphic u)|
|(Fractional u, Ord u) => OPlus (ObjectPos u)|
|(Num u, Ord u) => OPlus (CtxPicture u)|
a `oplus` b
Place 'drawing' a over b. The idea of
|OPlus a => OPlus (r -> a)|
|(OPlus a, OPlus b) => OPlus (a, b)|
|OPlus a => OPlus (CF1 r1 a)|
|(OPlus a, OPlus b, OPlus c) => OPlus (a, b, c)|
|OPlus a => OPlus (CF2 r1 r2 a)|
|(OPlus a, OPlus b, OPlus c, OPlus d) => OPlus (a, b, c, d)|
A bifunctor class
A Bifunctor class.
Again, it would be nice if there was a Bifunctor class in the Haskell Base libraries...
Horizontal alignment - align to the top, center or bottom.
Vertical alignment - align to the left, center or bottom.
Cardinal (compass) positions
An enumeratied type representing the compass positions.
Advance vectors provide an idiom for drawing consecutive graphics. PostScript uses them to draw left-to-right text - each character has an advance vector for the width and as characters are drawn they successively displace the start point for the next character with their advance vector.
Type alias for Vec2.
Extract the horizontal component of an advance vector.
For left-to-right latin text, the vertical component of an advance vector is expected to be 0. Ingoring it seems permissible when drawing text.
DUnit is always for fully saturated type constructors, so (seemingly) an equivalent type family is needed for monads.