Print and write text with do-notation
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

monadic-printer Travis Status

A simple library for writing texts easier using do-notation.


Writing lines of text

log_ $ do
  "A message on the first line"
  "Some more messages"
  "combining " <> "text"

Prints the following to stdout

A message on the first line

Some more messages
combining text

Writing long texts

getText $ do
  "My text"

Produces "My text\nline\nby\nline" :: Text

Or you can retrieve the content as list of lines

getLines $ do
  "My text"

Produces ["My text","line","by","line"] :: [Text]


In many applications I end up writing something like

putStrLn "Hello user, you have to do something for me"
putStrLn "First: stand up"
putStrLn "Clap your hands"

And it gets tedious quickly, so I decided to make this very simple library which allows writing longer texts with do notation.

This application is opinionated about the type of String it uses. I chose Text because it is more efficient than String, yet not as difficult to deal with as ByteString.