Thanks so much for all the help many of you have provided. I have one
(heh) more question:
I have this code:
defaultHandler :: LogHandler b => IO (a -> IORef b)
defaultHandler = do
h <- (streamHandler stdout WARNING)
r <- newIORef h
return (\x -> r)
The idea is to create a new IORef to something in the LogHandler class
and return a function that returns it. The thing returned by that call
to streamHandler is in the LogHandler class. Specifically, its
declaration looks like this:
instance LogHandler (GenericHandler a) where
...
and streamHandler returns a "GenericHandler Handle" object.
Now, when compiling that defaultHandler code, the compiler complains:
Cannot unify the type-signature variable `b'
with the type `MissingH.Logging.Handler.Simple.GenericHandler
Handle'
Expected type: IORef b
Inferred type: IORef
(MissingH.Logging.Handler.Simple.GenericHandler
Handle)
In a lambda abstraction: \ x -> r
In the first argument of `return', namely `(\ x -> r)'
I'm stumped. Can anyone shed some light on that for me?
Thanks,
-- John
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe