Wrapped versions of the
Primitive type from Wumpus-Core.
CatPrim could probably manage happily just being a Primitive, but it is wrapped as a newtype...
Graphics objects, even simple ones (line, arrow, dot) might need more than one primitive (path or text label) for their construction. Hence, the primary representation that all the others are built upon must support concatenation of primitives.
Wumpus-Core has a type Picture - made from one or more Primitives - but Pictures include support for affine frames. For drawing many simple graphics (dots, connector lines...) that do not need individual affine transformations this is a penalty. A list of Primitives is therefore more suitable representation, and a Hughes list which supports efficient concatenation is wise.
NOTE - currently HPrim has a phantom unit
u, this is so
trace drawings can have a unit type, but this may change as
perhaps trace drawings don't benefit from having units.