module Control.Category.Printf.ByteString.Strict
       ( module Control.Category.Printf
       , printf
       , printfLn
       , hPrintf
       , hPrintfLn
       ) where

import Prelude hiding (id, (.))
import Control.Comonad
import Control.Category.Printf
import Data.ByteString (ByteString)
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as BC
import System.IO (Handle)

printf :: Format ByteString (IO ()) b -> b
printf = printfWith B.putStr

printfLn :: Format ByteString (IO ()) b -> b
printfLn = printfWith BC.putStrLn 

hPrintf :: Handle -> Format ByteString (IO ()) b -> b
hPrintf h = printfWith (B.hPutStr h)

hPrintfLn :: Handle -> Format ByteString (IO ()) b -> b
hPrintfLn h = printfWith (BC.hPutStrLn h)