[Haskell-cafe] Re: MonadPrompt + Gtk2Hs = ?
felipe.lessa at gmail.com
Tue Jan 15 04:55:07 EST 2008
On Jan 14, 2008 8:27 PM, apfelmus <apfelmus at quantentunnel.de> wrote:
> The type of contPromptM is even more general than that:
> casePromptOf' :: (r -> f b)
> -> (forall a,b. p a -> (a -> f b) -> f b)
> -> Prompt p r -> f b
> casePromptOf' done cont (PromptDone r) = done r
> casePromptOf' done cont (Prompt p c ) = cont p (casePromptOf' done cont . c)
(I guess the forall b inside 'cont' is a typo?)
Actually, it can be as general as
casePromptOf :: (r -> b)
-> (forall a. p a -> (a -> b) -> b)
-> Prompt p r -> b
casePromptOf done cont (PromptDone r) = done r
casePromptOf done cont (Prompt p c ) = cont p (casePromptOf done cont . c)
And, just for the record,
runPromptAgain :: Monad m => (forall a. p a -> m a) -> Prompt p r -> m r
runPromptAgain f = casePromptOf return ((>>=) . f)
> The link to ContT m a = (forall b . (a -> m b) -> m b) is apparent in
> the case of casePromptOf' and is no surprise: you can omit p a and
> Prompt p r entirely and implement them directly as continuations
> (thereby loosing the ability to use it with different m, which would
> defeat the whole point here.) See also
> Implementing the State Monad.
> for the details.
I've read that e-mail when it was sent but didn't understand it fully.
I guess now I'm in a better condition, but I still have a lot to learn
about these little warm, fuzzy things. Actually, the more I see, the
less I understand why some people are afraid of them... it must really
be the name 'monad'.
Thanks for all the help guys! Next I'll try to reproduce the freezes I
was getting with my first forkIO approach.
More information about the Haskell-Cafe