[Haskell-beginners] Review request
C K Kashyap
ckkashyap at gmail.com
Mon Jul 16 13:10:45 CEST 2012
Thanks Carlos - you can import Text.Regex.Posix to get (=~)
Is there a way to avoid the (++) in your implementation? It has a linear
On Mon, Jul 16, 2012 at 1:36 AM, Carlos J. G. Duarte <
carlos.j.g.duarte at gmail.com> wrote:
> Looks good to me, but I'm just a beginner!
> I used the isInfixOf from Data.List instead of =~ to run your example
> because the later wasn't working on my instalation.
> I've made a slightly variant using the break function:
> import Data.List
> startTag = "<bug>"
> endTag = "</bug>"
> main = interact process
> process = unlines . extractSection startTag endTag . lines
> extractSection start stop xs =
> let (ls,rs) = break (isInfixOf stop) $ dropWhile (not . isInfixOf start)
> in ls ++ take 1 rs
> On 07/15/12 13:08, C K Kashyap wrote:
> I'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
> I'd like to extract the contents between <bug> and </bug> (including the
> startTag = "<bug>"endTag = "</bug>"
> process = unlines . specialTakeWhile (f endTag) . dropWhile (f startTag) . lines
> where f t x = not (x =~ t)
> specialTakeWhile :: (a -> Bool) -> [a] -> [a]
> specialTakeWhile ff  = 
> specialTakeWhile ff (x:xs) = if ff x then x:(specialTakeWhile ff xs)** else [x]
> It'll be great if I could get some feedback on this.
> Beginners mailing listBeginners at haskell.orghttp://www.haskell.org/mailman/listinfo/beginners
> Beginners mailing list
> Beginners at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners