I was just being dumb. I can use ByteString's hGetSome and then convert to a typical String. I will eventually switch over to ByteString parsing, but this works for now.