Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://www.haskell.org/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: Review request (C K Kashyap) 2. Re: Review request (Carlos J. G. Duarte) ---------------------------------------------------------------------- Message: 1 Date: Mon, 16 Jul 2012 16:40:45 +0530 From: C K Kashyap <ckkash...@gmail.com> Subject: Re: [Haskell-beginners] Review request To: "Carlos J. G. Duarte" <carlos.j.g.dua...@gmail.com> Cc: beginners@haskell.org Message-ID: <cagdt1govmw+mimmmq-xcejzdwcx1uzrf+w11pdmuembafsa...@mail.gmail.com> Content-Type: text/plain; charset="iso-8859-1" Thanks Carlos - you can import Text.Regex.Posix to get (=~) Is there a way to avoid the (++) in your implementation? It has a linear time overhead. Regards, Kashyap On Mon, Jul 16, 2012 at 1:36 AM, Carlos J. G. Duarte < carlos.j.g.dua...@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) > xs > in ls ++ take 1 rs > > > > On 07/15/12 13:08, C K Kashyap wrote: > > Hi, > 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 > - > a > b > c > <bug> > d > e > f > </bug> > g > h > i > > I'd like to extract the contents between <bug> and </bug> (including the > markers). > > 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. > > Regards, > > Kashyap > > > > _______________________________________________ > Beginners mailing > listBeginners@haskell.orghttp://www.haskell.org/mailman/listinfo/beginners > > > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://www.haskell.org/mailman/listinfo/beginners > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20120716/491783ee/attachment-0001.htm> ------------------------------ Message: 2 Date: Mon, 16 Jul 2012 17:57:59 +0100 From: "Carlos J. G. Duarte" <carlos.j.g.dua...@gmail.com> Subject: Re: [Haskell-beginners] Review request To: beginners@haskell.org Message-ID: <50044817.1000...@gmail.com> Content-Type: text/plain; charset="us-ascii" An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20120716/7a39c0a5/attachment-0001.htm> ------------------------------ _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners End of Beginners Digest, Vol 49, Issue 18 *****************************************