Currently, I'm using something like this to write JSON content (my_json) to a file (my_output_filepath):
import           Data.Aeson.Encode.Pretty
import qualified Data.ByteString.Lazy.UTF8 as U
writeFile my_output_filepath $ U.toString $ encodePretty my_json
This works, but I'm wondering whether it is necessary to convert the ByteString that is returned by (encodePretty) to a String before writing it to a file, or if it incurs a performance penalty.
I see there is a variant of writeFile that accepts a ByteString as input.  However, when I try to use it, I get this error:
Couldn't match expected type ‘B.ByteString’
            with actual type ‘U.ByteString’
NB: ‘B.ByteString’ is defined in ‘Data.ByteString.Internal’
    ‘U.ByteString’ is defined in ‘Data.ByteString.Lazy.Internal’
Is there some way to get the Lazy variant of ByteString to interoperate with writeFile?