module Data.String.Builder (build, Builder) where
import Prelude hiding (undefined)
import Data.String
import Control.Monad.Trans.Writer
undefined :: a
undefined = error "Data.String.Builder.undefined"
newtype BuilderM a = BuilderM { runBuilderM :: Writer String a }
deriving Monad
type Builder = BuilderM ()
literal :: String -> Builder
literal = BuilderM . tell
instance IsString (BuilderM a) where
fromString s = literal s >> literal "\n" >> return undefined
build :: Builder -> String
build = snd . runWriter . runBuilderM