hPutStrLn -package:ihaskell

The same as hPutStr, but adds a newline character. This operation may fail with the same errors, and has the same issues with concurrency, as hPutStr!
Write a ByteString to a handle, appending a newline byte. Unlike hPutStr, this is not atomic: other threads might write to the handle between writing of the bytestring and the newline.
Write a ByteString to a handle, appending a newline byte. The chunks will be written one at a time, followed by a newline. Other threads might write to the Handle in between, and hence hPutStrLn alone is not suitable for concurrent writes.
Write a string to a handle, followed by a newline.
The same as hPutStr, but adds a newline character.
Write data plus newline character.
Write a string like value a to a supplied Handle, appending a newline character.
Write a string to a handle, followed by a newline N.B.: implementations might not define this atomically. If the state of being atomic is necessary, one possible solution is to convert a string to an efficient type for which hPutStrLn is atomic.
Given a list of strings, output a line containing each item, adding newlines as appropriate. The list is not expected to have newlines already.