stringbuilder-0.5.1: A writer monad for multi-line string literals
Safe HaskellSafe-Inferred
LanguageHaskell98

Data.String.Builder

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

Instances details
Applicative BuilderM Source # 
Instance details

Defined in Data.String.Builder

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

Functor BuilderM Source # 
Instance details

Defined in Data.String.Builder

Methods

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

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

Monad BuilderM Source # 
Instance details

Defined in Data.String.Builder

Methods

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

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

return :: a -> BuilderM a

Monoid Builder Source # 
Instance details

Defined in Data.String.Builder

Semigroup Builder Source # 
Instance details

Defined in Data.String.Builder

Methods

(<>) :: Builder -> Builder -> Builder

sconcat :: NonEmpty Builder -> Builder

stimes :: Integral b => b -> Builder -> Builder

a ~ () => IsString (BuilderM a) Source # 
Instance details

Defined in Data.String.Builder

Methods

fromString :: String -> BuilderM a