<pre><span class="keyword">Is there a reason why the lift function in ReaderT's MonadTrans instance is implemented as:<br><br></span><span class="keyword">instance</span> <span class="conid">MonadTrans</span> <span class="layout">(</span><span class="conid">ReaderT</span> <span class="varid">r</span><span class="layout">)</span> <span class="keyword">where</span><br>
<a name="line-162"></a> <span class="varid">lift</span> <span class="varid">m</span> <span class="keyglyph">=</span> <span class="conid">ReaderT</span> <span class="varop">$</span> <span class="keyglyph">\</span><span class="keyword">_</span> <span class="keyglyph">-></span> <span class="varid">m</span><br>
<br><br>Instead of just using the monad's return function? Could "lift m" be implemented as "return m"?<br><br><span class="keyword"><br>instance</span> <span class="layout">(</span><span class="conid">Monad</span> <span class="varid">m</span><span class="layout">)</span> <span class="keyglyph">=></span> <span class="conid">Monad</span> <span class="layout">(</span><span class="conid">ReaderT</span> <span class="varid">r</span> <span class="varid">m</span><span class="layout">)</span> <span class="keyword">where</span><br>
<a name="line-141"></a> <b> <span class="varid">return</span> <span class="varid">a</span> <span class="keyglyph">=</span> <span class="conid">ReaderT</span> <span class="varop">$</span> <span class="keyglyph">\</span><span class="keyword">_</span> <span class="keyglyph">-></span> <span class="varid">return</span> <span class="varid">a</span></b><br>
<a name="line-142"></a> <span class="varid">m</span> <span class="varop">>>=</span> <span class="varid">k</span> <span class="keyglyph">=</span> <span class="conid">ReaderT</span> <span class="varop">$</span> <span class="keyglyph">\</span><span class="varid">r</span> <span class="keyglyph">-></span> <span class="keyword">do</span><br>
<a name="line-143"></a> <span class="varid">a</span> <span class="keyglyph"><-</span> <span class="varid">runReaderT</span> <span class="varid">m</span> <span class="varid">r</span><br><a name="line-144"></a> <span class="varid">runReaderT</span> <span class="layout">(</span><span class="varid">k</span> <span class="varid">a</span><span class="layout">)</span> <span class="varid">r</span><br>
<a name="line-145"></a> <span class="varid">fail</span> <span class="varid">msg</span> <span class="keyglyph">=</span> <span class="conid">ReaderT</span> <span class="varop">$</span> <span class="keyglyph">\</span><span class="keyword">_</span> <span class="keyglyph">-></span> <span class="varid">fail</span> <span class="varid">msg</span><br>
<a name="line-146"></a><br><br>Thanks,<br><br>Daryoush<br><br><br><br><span class="keyword"></span><br></pre><br>