title: Haskell: lift vs liftIO
body: <p>In what situations should <code>liftIO</code> be used? When I'm using <code>ErrorT String IO</code>, the <code>lift</code> function works to lift IO actions into <code>ErrorT</code>, so <code>liftIO</code> seems superfluous.</p>