title: Haskell : concat two IO Strings
body: <p>Today I have tried to concat two IO Strings and couldn't get it work. </p>
  
  <p>So, the problem is: suppose we have <code>s1 :: IO String</code> and <code>s2 :: IO String</code>. How to implement function <code>(+++) :: IO String -&gt; IO String -&gt; IO String</code>, which works exactly as <code>(++) :: [a] -&gt; [a] -&gt; [a]</code> but for IO String? </p>
  
  <p>And more general question is how to implement more general function <code>(+++) :: IO a -&gt; IO a -&gt; IO a</code>? Or maybe even more general?</p>