
On Fri, 13 Aug 2010 21:39:33 -0700
prad
"I think It's time for you to get serious with the monads" that's just what i'm going to do!
i'm asking the question in this thread because i think it has something to do with monads though i'm not sure. in fact, the problem seems completely bizarre to me. i have a function: mkTxt :: (IConnection conn) => conn -> String -> [String] mkTxt conn tS = do --zzzz <- readFile "zzpubs.htm" let wL = words (rpNls tS) ((f,vL):zz) = gtInx wL ["```"] rvL = reverse vL doIns wL rvL where doIns wL [] = wL doIns wL (v:vs) = do let (f,a:b:ss) = splitAt v wL (doIns f vs) ++ ["aoeeuu"] ++ ss the program compiles and runs fine. however, if i remove the comment dashes to allow zzzz <- readFile "zzpubs.htm" the compiler produces what is to me an incomprehensible rationale for an error: ==== gadit.hs:103:4: Couldn't match expected type `IO String' against inferred type `[String]' In a stmt of a 'do' expression: zzzz <- readFile "zzpubs.htm" In the expression: do { zzzz <- readFile "zzpubs.htm"; let wL = words (rpNls tS) ((f, vL) : zz) = gtInx wL ... ....; doIns wL rvL } In the definition of `mkTxt': mkTxt conn tS = do { zzzz <- readFile "zzpubs.htm"; let wL = ... ....; doIns wL rvL } where doIns wL [] = wL doIns wL (v : vs) = do { let ...; .... } ==== i don't do anything with zzzz!! it merely is the name i'm giving to the monadic computation to read in a file. in fact, it has nothing to do with the rest of the function because i don't use it at all. why is the compiler complaining? -- In friendship, prad ... with you on your journey Towards Freedom http://www.towardsfreedom.com (website) Information, Inspiration, Imagination - truly a site for soaring I's