problems figuring out what the type system is telling me
Hal Daume III
hdaume@ISI.EDU
Fri, 7 Jun 2002 21:54:16 -0700 (PDT)
see http://haskell.org/wiki/wiki?ThatAnnoyingIoType and
http://haskell.org/wiki/wiki?UsingIo
--
Hal Daume III
"Computer science is no more about computers | hdaume@isi.edu
than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
On Fri, 7 Jun 2002, Chris Moline wrote:
> hi. i am really stuck on this problem and i cant seem to figure it out and so
> i am posting this in the hopes someone will help me. i realize you prolly get
> this kind of question alot but the wiki and the papers i have been reading
> arent helping to clarify things.
>
> i am trying to write a little utility to make it easier to get rid of ports on
> my machine. the function that is giving me trouble is getDepends. it takes the
> name of a port and opens the appropriate +CONTENTS file and returns the
> dependencies it finds.
>
> here is the function and its helper.
>
> getDepends :: String -> [String]
> getDepends p = do
> handle <- openFile (portsDir ++ p) ReadMode
> fetchDepends handle
>
> fetchDepends :: Handle -> [String]
> fetchDepends handle = do
> l <- hGetLine handle
> e <- hIsEOF handle
> case (not e) of -- ifs keep giving indent errors so ill just use case
> True ->
> case (matchRegex (mkRegex "^@pkgdep") l) of
> Just [a] -> [drop 8 l] ++ (fetchDepends handle)
> _ -> fetchDepends handle
> False -> ""
>
> here is ghci's error messages.
>
> Compiling Pheobe ( Phoebe.hs, interpreted )
>
> Phoebe.hs:19:
> Couldn't match `[]' against `IO'
> Expected type: [t]
> Inferred type: IO Handle
> In the application `openFile (portsDir ++ p) ReadMode'
> In a 'do' expression pattern binding:
> handle <- openFile (portsDir ++ p) ReadMode
>
> Phoebe.hs:24:
> Couldn't match `[]' against `IO'
> Expected type: [t]
> Inferred type: IO String
> In the application `hGetLine handle'
> In a 'do' expression pattern binding: l <- hGetLine handle
> Failed, modules loaded: none.
>
> could someone be so kind as to explain what the problem is?
>
> sincerly,
> chris moline
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>