-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Story-board is a Haskell-DSL for presenting slides.
It is intended as a viable replacement for beamer, PowerPoint, and pandoc, but with stronger scripting ability.
Story Board is populated by a list of Slide
s.
Type | Purpose | Monad? | Monoid Action |
---|---|---|---|
Slide a |
Layout slide content | Monad | Sequence |
Deck a |
Deck of transparent layers | Monad | Sequence |
Tile a |
Draw Rectangular Picture | Functor | Overlay |
Mosaic a |
Piece together Tile s |
Applicative | Sequence |
Prose | Words of Text | - | Append |
A Slide
is a monad for rendering the slide. You can think of a Slide
as a state monad
of a statically sized Mosaic
, with commands to fill the spaces inside the Mosaic
, so
you can tell your story.
A Deck
is a monad for layering transparencies into slides. Every slide has at least one
Mosaic
.
A Tile
is a fixed-size piece of screen real-estate. A Tile
s size can statically
queried. When rendering, a Tile
may fill a larger space than originally requested (padding).
A Mosaic
is a layout of tiles around a cavity, using an algorithm modeled on the Tk/Tcl packer algorithm.
A Mosaic
is filled outside inwards, using the Applicative Functor or Monoid API.
The Cavity
, the space inside a Mosaic
that is not filled yet, is stretched as needed.
If you know the size of the final Mosaic
, then the Cavity
size can be statically determined.
Prose
is a list of words, with optional markup annotations, like b
, i
, and fontSize
.
- Anything that uses blank-canvas (generates at
Canvas
) can be plugged into story-board. - This includes diagrams.