Hi,<div>I&#39;ve written a small haskell program to extract a section from a file between start and end markers. For example, if I have a file such as below - </div><div><div>a</div><div>b</div><div>c</div><div>        &lt;bug&gt;</div>
<div>d</div><div>e</div><div>f</div><div>        &lt;/bug&gt;</div><div>g</div><div>h</div><div>i</div></div><div><br></div><div>I&#39;d like to extract the contents between &lt;bug&gt; and &lt;/bug&gt; (including the markers). </div>
<div><br></div><div><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-definition">startTag</span> <span class="hs-keyglyph">=</span> <span class="hs-str" style="color:rgb(54,99,84)">&quot;&lt;bug&gt;&quot;</span>
<span class="hs-definition">endTag</span> <span class="hs-keyglyph">=</span> <span class="hs-str" style="color:rgb(54,99,84)">&quot;&lt;/bug&gt;&quot;</span>

<span class="hs-definition">process</span>  <span class="hs-keyglyph">=</span> <span class="hs-varid" style="color:rgb(51,51,51)">unlines</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">endTag</span><span class="hs-layout">)</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">dropWhile</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">startTag</span><span class="hs-layout">)</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">lines</span> 
        <span class="hs-keyword" style="color:rgb(57,116,96)">where</span> <span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">t</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-keyglyph">=</span> <span class="hs-varid" style="color:rgb(51,51,51)">not</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-varop" style="color:rgb(51,51,51)">=~</span> <span class="hs-varid" style="color:rgb(51,51,51)">t</span><span class="hs-layout">)</span> 
              <span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-keyglyph">::</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span> <span class="hs-keyglyph">-&gt;</span> <span class="hs-conid" style="color:rgb(79,67,113)">Bool</span><span class="hs-layout">)</span> <span class="hs-keyglyph">-&gt;</span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span><span class="hs-keyglyph">]</span> <span class="hs-keyglyph">-&gt;</span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span><span class="hs-keyglyph">]</span>
              <span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-conid" style="color:rgb(79,67,113)">[]</span> <span class="hs-keyglyph">=</span> <span class="hs-conid" style="color:rgb(79,67,113)">[]</span>
              <span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-conop">:</span><span class="hs-varid" style="color:rgb(51,51,51)">xs</span><span class="hs-layout">)</span> <span class="hs-keyglyph">=</span> <span class="hs-keyword" style="color:rgb(57,116,96)">if</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-keyword" style="color:rgb(57,116,96)">then</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-conop">:</span><span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-varid" style="color:rgb(51,51,51)">xs</span><span class="hs-layout">)</span> <span class="hs-keyword" style="color:rgb(57,116,96)">else</span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-keyglyph">]</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)">
<span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph">It&#39;ll be great if I could get some feedback on this.</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)">
<span class="hs-keyglyph">Regards,</span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph">Kashyap</span></pre></div>