
On Fri, Sep 16, 2005 at 12:12:50AM +0200, Sebastian Sylvan wrote:
On 9/14/05, Mark Carter
wrote: The problem I was having before was that I was trying to create a separate function onCbEdit, thus: cbEdit <- checkBox p1 [text := "Edit Mode", on command := onCbEdit textlog ] This had the problem that onCbEdit basically needed to have its control passed in (i.e. cbEdit) as a parameter in order to inspect its state. So I wanted to do something like: cbEdit <- checkBox p1 [text := "Edit Mode", on command := onCbEdit textlog cbEdit ] Except you can't do that, because cbEdit isn't yet defined. But your suggestion gets 'round that. In the main loop, I now do: cbEdit <- checkBox p1 [text := "Edit Mode" ] set cbEdit [ on command := onCbEdit textlog cbEdit ]
Some extension (I think) to GHC allows mdo-notation (recursive do). So you can do this: mdo -- yadayada.... cbEdit <- checBox p1 [text := "Edit Mode", on comand := onCbEdit textlog cbEdit] -- yadayada...
No extensions are needed, actually: cbEdit <- checBox p1 [text := "Edit Mode", on comand ::= onCbEdit textlog] ^^^ Note the double colon. Prelude Graphics.UI.WX> :t (:=) (:=) :: Attr w a -> a -> Prop w Prelude Graphics.UI.WX> :t (::=) (::=) :: Attr w a -> (w -> a) -> Prop w Prelude Graphics.UI.WX> :t (:~) (:~) :: Attr w a -> (a -> a) -> Prop w Prelude Graphics.UI.WX> :t (::~) (::~) :: Attr w a -> (w -> a -> a) -> Prop w Happy hacking, Remi -- Nobody can be exactly like me. Even I have trouble doing it.