The elementary base types and classes.
- type family MonUnit m :: *
- class OPlus t where
- oplus :: t -> t -> t
- oconcat :: OPlus t => t -> [t] -> t
- altconcat :: OPlus a => a -> [a] -> a
- 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 UNil u = UNil
- class ScalarUnit a where
- class Num u => InterpretUnit u where
- dinterpF :: (Functor t, InterpretUnit u) => FontSize -> t Double -> t u
- normalizeF :: (Functor t, InterpretUnit u) => FontSize -> t u -> t Double
- uconvert1 :: (InterpretUnit u, InterpretUnit u1) => FontSize -> u -> u1
- uconvertF :: (Functor t, InterpretUnit u, InterpretUnit u1) => FontSize -> t u -> t u1
- intraMapPoint :: InterpretUnit u => FontSize -> (DPoint2 -> DPoint2) -> Point2 u -> Point2 u
- intraMapFunctor :: (Functor f, InterpretUnit u) => FontSize -> (f Double -> f Double) -> f u -> f u
- data DrawStyle
- data ZDeco
- data HAlign
- data VAlign
- data Cardinal
- data Direction
- vsum :: Num u => [Vec2 u] -> Vec2 u
Type family to access the unit parameter of a TraceDrawing or a promoted TraceDrawingT transformer.
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...
a `oplus` b
Place 'drawing' a over b. The idea of
|Ord u => OPlus (BoundingBox u)|
|Num u => OPlus (Vec2 u)|
|OPlus (UNil u)|
|(Fractional u, Ord u) => OPlus (Orientation u)|
|OPlus a => OPlus (r -> a)|
|(OPlus a, OPlus b) => OPlus (a, b)|
|OPlus a => OPlus (Const a b)|
|(OPlus a, OPlus b, OPlus c) => OPlus (a, b, c)|
|(OPlus a, OPlus b, OPlus c, OPlus d) => OPlus (a, b, c, d)|
list_head * [rest] -> Ans
Semigroup version of
mconcat from the module
As a semigroup cannot build a zero value, concat cannot
handle the empty list. So to make
oconcat a safe function
the input list is already destructured by one cons cell.
Effectively this means that client code must handle the
empty list case, before calling
alternative * [list] -> Ans
When supplied the empty list
altconcat returns the supplied
alternative value. If the list is inhabited, the alternative
value is discarded.
This contrasts to
oconcat where the single value represents
the head of an already destructured list.
A bifunctor class
A Bifunctor class.
Again, it would be nice if there was a Bifunctor class in the Haskell Base libraries...
Unit phantom type
The empty data type - i.e.
() - wrapped with a phantom unit
Non-contextual unit conversion.
Unit interpretation with respect to the current Point size
dinterp an object that gives access to its unit at the
normalize an object that gives access to its unit at the
Convert a scalar value from one unit to another.
Unit convert an object that gives access to its unit at the Functor position.
In practive this will be *all* Image answers.
Decorating with resepct to the Z-order
SUPERIOR - in front.
ANTERIOR - behind.
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.
An enumerated type representing horizontal and vertical directions.