Re: Another call for votes
Nick Name <[email protected]>
| Newsgroups | gmane.comp.lang.haskell.gui |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 18 Mar 2003 12:33:44 +0100 Daan Leijen <[email protected]> wrote: > > I disagree with this design. It is very awkward to install callbacks > this way as we have to maintain the "unregister" function. We can no > longer use "nice" syntax like: > > button [on click := messageBox "hi there"] You can have the "unregister onClick action" in the resulting "ButtonType" value, just as you keep there other important attributes of a button. > > I also think that "register/unregister" is a confusing name. Here is > my proposal. We have two functions for each event type. One to set > the current callback, and one to get the current callback. (there is > only one callback at any time). Yes, but: if you want to modify the current callback, for example to append another with ">>", you have to lock it if there are other haskell threads; you can't just get it, modify and put back, you need a "modifyCallback" action. This can be implemented with MVars of course. The other way around, wich is "registerCallback :: (a -> IO b) -> IO (IO ())" is more useful if one allows more than one callback at a time. It seems to me that one thing is implementable by the other, by tricking with functional equality, so I guess we will choose the one that matches more toolkits. Vincenzo