stringbuilder-0.5.1: A writer monad for multi-line string literals

Safe HaskellSafe
LanguageHaskell98

Data.String.Builder

Contents

Description

The build function can be used to construct multi-line string literals in a monadic way:

{-# LANGUAGE OverloadedStrings #-}

import Data.String.Builder

mystring :: String
mystring = build $ do
  "foo"
  "bar"
  "baz"

Synopsis

Functions

build :: Builder -> String Source #

Run a builder.

literal :: String -> Builder Source #

Add a literal string.

Types

data BuilderM a Source #

A writer monad for string literals.

Instances

Monad BuilderM Source # 

Methods

(>>=) :: BuilderM a -> (a -> BuilderM b) -> BuilderM b #

(>>) :: BuilderM a -> BuilderM b -> BuilderM b #

return :: a -> BuilderM a #

fail :: String -> BuilderM a #

Functor BuilderM Source # 

Methods

fmap :: (a -> b) -> BuilderM a -> BuilderM b #

(<$) :: a -> BuilderM b -> BuilderM a #

Applicative BuilderM Source # 

Methods

pure :: a -> BuilderM a #

(<*>) :: BuilderM (a -> b) -> BuilderM a -> BuilderM b #

liftA2 :: (a -> b -> c) -> BuilderM a -> BuilderM b -> BuilderM c #

(*>) :: BuilderM a -> BuilderM b -> BuilderM b #

(<*) :: BuilderM a -> BuilderM b -> BuilderM a #

Monoid Builder Source # 
(~) * a () => IsString (BuilderM a) Source # 

Methods

fromString :: String -> BuilderM a #