Thanks it works but what exactly does this "in" before the last statement does?? I have never seen it before and the program gives me the parse error if I don't have it?? Best Regards NooK ----- Original Message ----- From: "Hal Daume III" <hdaume@ISI.EDU> To: "Alexandre Weffort Thenorio" <alethenorio@home.se> Sent: Friday, March 14, 2003 4:32 PM Subject: Re: Recursion with do??
fbk size new_str (x:xs) = do let first = findstr size new_str x let bksize = (Function that gives the size of the string to substitute in this line) let done = fbk bksize new_str xs return done
There's no reason to use do notation here. This is a pure function. YOu can write it as:
fbk size new_str (x:xs) = let first = ... bksize = ... in fbk bksize new_str xs
I'm not sure why you would be getting a parse error though.
----- Original Message ----- From: "Hal Daume III" <hdaume@ISI.EDU> To: "Alexandre Weffort Thenorio" <alethenorio@home.se> Sent: Thursday, March 13, 2003 9:33 PM Subject: Re: How to search for a string sequence in a file a rewrite it???
what is the type signature of write, and why are you using do notation? might you want something like:
fillIn lines = do let bkfilled = findstr str str2 lines write bkfilled
or something like that?
-- Hal Daume III | hdaume@isi.edu "Arrest this man, he talks in maths." | www.isi.edu/~hdaume
On Thu, 13 Mar 2003, Alexandre Weffort Thenorio wrote:
Ooops a small error before but here is the right one.
Great. I got almost everything. My problem now is:
I got a function called findstr where
findstr "aaaa" "zzzzz" ["xxxxaaaa","xxxaaaaxxx"] = ["xxxxzzzzz","xxxzzzzzxxx"]
and then I try something like
fillIn lines = do bkfilled <- (findstr str str2 lines) write bkfilled
where write takes a [String] and concatenates it writing it to a file then. But I get this error saying:
Expected Type: [String] Inferred Type: String In the first argument of 'write' namelly 'bkfilled' In a do expection pattern binding: write bkfilled
Any idea?? I mean bkfilled is supposed to be [String] but it says it is a String, any idea why???
Best Regards
Alex
----- Original Message ----- From: "Hal Daume III" <hdaume@ISI.EDU> To: "Alexandre Weffort Thenorio" <alethenorio@home.se> Cc: <haskell@haskell.org> Sent: Thursday, March 13, 2003 1:38 AM Subject: Re: How to search for a string sequence in a file a rewrite it???
Right. *Recurse* down the list. Somethign like:
foo orig_str new_str xl@(x:xs) | orig_str `isPrefixOf` xl = <something> | otherwise = x : <something>
-- Hal Daume III | hdaume@isi.edu "Arrest this man, he talks in maths." | www.isi.edu/~hdaume
On Thu, 13 Mar 2003, Alexandre Weffort Thenorio wrote:
Well the problem is that the string I want to replace will usually be in the middle of a line in the text file and then is PrefixOf of no use?? Any other suggestion??
Like the text file will be similar to
abcdedjkfhlafl sajkhlabbbbsf akfhjklafjkhfk sdfasfsaasffaa
So I want to replace this bbbb in the middle there with aaaa. I could run lines on the file but from there i have no idea. I have got an idea but for it to work I need to know if there is a function that I can replace a certain Char in a string by another Char by knowing the index of this char??
Best Regards
NooK ----- Original Message ----- From: "Hal Daume III" <hdaume@ISI.EDU> To: "Alexandre Weffort Thenorio" <alethenorio@home.se> Cc: <haskell@haskell.org> Sent: Thursday, March 13, 2003 1:05 AM Subject: Re: How to search for a string sequence in a file a rewrite it???
> This is how I would do it: > > recurse down the input string. use isPrefixOf to check is the string youw > ant to replace is at the head of the string. if it is, 'drop' the > appropriate number of characters and stick the replacement string on the > front. then recurse. > > this should be about 3 lines of code. > > -- > Hal Daume III | hdaume@isi.edu > "Arrest this man, he talks in maths." | www.isi.edu/~hdaume > > On Thu, 13 Mar 2003, Alexandre Weffort Thenorio wrote: > > > OK Guys. First I would like to say thanks for all the help given before. As > > I said I am still learning Haskell. My problem is the following: > > > > I have a text file and somewhere in the file there is string (Let's say > > aaaa). So I need to find this exact string and overwrite with another string > > (Lets say bbbb). > > > > I have thought a bit and couldn't find any solution, and I believe it is a > > piece of cake for some of you. Is there a method already implemented in > > haskell to do that?? > > Anyway thanks in advance. > > > > Best Regards > > > > NooK > > > > ----- Original Message ----- > > From: "Arthur Baars" <arthurb@cs.uu.nl> > > To: <haskell@haskell.org> > > Cc: "Norman Ramsey" <nr@eecs.harvard.edu> > > Sent: Wednesday, March 12, 2003 1:06 AM > > Subject: Re: clueless GHCI user wishes to load QuickCheck > > > > > > > QuickCheck is in de "util" package. You can load a package with the > > > -package flag: > > > > > > $ ghci -package util > > > Prelude> :browse QuickCheck > > > class Arbitrary a where { > > > arbitrary :: Gen a; coarbitrary :: forall b. a -> Gen b -> Gen b; } > > > arbitrary :: forall a. (Arbitrary a) => Gen a > > > ... > > > Prelude>:module QuickCheck > > > > > > Prelude QuickCheck> :info trivial > > > -- trivial is a variable > > > trivial :: forall a. (Testable a) => Bool -> a -> Property > > > > > > Hope this helps. > > > > > > Cheers, > > > > > > Arthur > > > > > > On Tuesday, March 11, 2003, at 07:02 PM, Norman Ramsey wrote: > > > > > > > Can anyone help me figure out how to load QuickCheck into GHCI? > > > > QuickCheck is included in my Debian package, but my attempts > > > > at loading it are bootless: > > > > > > > > Prelude> :load QuickCheck > > > > can't find module `QuickCheck' > > > > Prelude> :load util/QuickCheck > > > > can't find module `util/QuickCheck' > > > > Prelude> :info > > > > syntax: `:i <thing-you-want-info-about>' > > > > Prelude> :load util/QuickCheck.hi > > > > can't find module `util/QuickCheck.hi' > > > > Prelude> :load /usr/lib/ghc-5.02.2/imports/util/QuickCheck.hi > > > > can't find module `/usr/lib/ghc-5.02.2/imports/util/QuickCheck.hi' > > > > Prelude> :load /usr/lib/ghc-5.02.2/imports/util/QuickCheck > > > > can't find module `/usr/lib/ghc-5.02.2/imports/util/QuickCheck' > > > > Prelude> > > > > > > > > Any advice, anyone? > > > > > > > > > > > > Norman > > > > _______________________________________________ > > > > Haskell mailing list > > > > Haskell@haskell.org > > > > http://www.haskell.org/mailman/listinfo/haskell > > > > > > > > > > _______________________________________________ > > > Haskell mailing list > > > Haskell@haskell.org > > > http://www.haskell.org/mailman/listinfo/haskell > > > > > > > _______________________________________________ > > Haskell mailing list > > Haskell@haskell.org > > http://www.haskell.org/mailman/listinfo/haskell > > > > _______________________________________________ > Haskell mailing list > Haskell@haskell.org > http://www.haskell.org/mailman/listinfo/haskell >