Algebras
The majority of the functionality in Doodle is provided by algebras. Algebras are essentially interfaces describing pieces of functionality. A very simple example of an algebra is Shape. It provides the functionality to create basic geometric shapes, like circles and squares.
Different backends offer different combinations of algebras, reflecting the different features they have available.
Implementation
All algebras extend Algebra. One role of Algebra
is to serve as a marker that a trait is intended to be an algebra in the Doodle sense. Algebra
also defines a type member Drawing[_]
, which corresponds to the type of value produced when a concrete algebra is used to create a picture. This is described in more detail in the next section.
You usually don't deal directly with algebras, instead working with the easier to use Picture type, which is described in the next section.