A String is nothing but a list of characters:
type String = [Char]
Hence,
onSeperateLines :: [[Char]] -> [Char]
Now, if you actually need this for some application, it's a good idea to first ask Hoogle if there's already something there. You get a whole lot of results:
unlines :: [String] -> String -- that's exactly the function you're trying to implement!
unwords :: [String] -> String -- similar, but only insert spaces, not newlines
joinPath :: [FilePath] -> FilePath -- Not relevant here
concat :: [[a]] -> [a] -- this does the general task of flattening a nested list to a simple one like a string.
concat is a good choice if you don't just want to use a standard function for the specific task, but also don't want to make life more difficult than necessary.
Of course, it also can't hurt to write a function like that once completely by yourself. To do that, you'll need to recursively† deconstruct a list. This is extremely simple thanks to pattern matching:
onSeperateLines [] = ... --- no lines to concatenate... what's the result?
onSeperateLines (l:ls) = ...
where otherLines = onSeperateLines ls
Think a little about what goes in these gaps.
†The equivalent solution with foldr is also a good excercise.