The names defined in the where clause are in scope in the do block, but not vice versa.
On Fri, Apr 17, 2009 at 12:43 AM, Tsunkiet Man <temp.t...@gmail.com> wrote: > Thank you for your response, however if I can't do that, why can the example > of wxHaskell do that? > > I refer to the following code inside > http://darcs.haskell.org/wxhaskell/samples/wx/ (ImageViewer.hs) > > Line 99 untill 110 > > openImage sw vbitmap mclose status fname > = do -- load the new bitmap > bm <- bitmapCreateFromFile fname -- can fail with exception > closeImage vbitmap > set vbitmap [value := Just bm] > set mclose [enabled := True] > set status [text := fname] > -- reset the scrollbars > bmsize <- get bm size > set sw [virtualSize := bmsize] > repaint sw > `catch` \err -> repaint sw > > if I'm correct the openImage is also defined in the where clause. Therefor > by what I think it should not be possible, but it is. > > Thanks for everything. > > > > > 2009/4/17 Lennart Augustsson <lenn...@augustsson.net> >> >> Variables bound in the do block are not in scope in the where. >> Use a let inside the do for onOpen instead. >> >> On Thu, Apr 16, 2009 at 11:53 PM, Tsunkiet Man <temp.t...@gmail.com> >> wrote: >> > Hello, >> > >> > I'm trying to create a GUI by using wxHaskell. However I get the weird >> > error >> > message of "Not in scope "dt"", well so I sorted them so that my so >> > called >> > "dt" was in scope, however it failed. Can someone please tell me how I >> > can >> > solve this error? >> > >> > ... A lot of code that is not relevant in my opinion, if I'm >> > wrong please correct me and I will post my full code >> > >> > --Debug text -- >> > dt <- staticText f [text := "Hello world!"] >> > >> > imagePanel <- panel f [position := Point 2 2, clientSize := >> > Size >> > 100 100, tooltip := "This is a drawPanel", bgcolor := rgb 255 255 255] >> > set f [ clientSize := Size 700 500, >> > menuBar := [mFile, mHelp], >> > visible := True, >> > on (menu exit) := close f, >> > on (menu open) := onOpen f vFile ] >> > >> > >> > return () >> > >> > where >> > onOpen :: Frame a -> Var b -> IO () >> > onOpen frame var = do file <- fileOpenDialog frame >> > False >> > True "Open File" [("PGM bestanden (*.pgm)",["*.pgm"]),("Alle bestanden >> > (*.*)",["*.*"])] "" "" >> > case file of >> > Nothing -> return () >> > Just file -> set dt [text >> > := >> > "HELLO"] >> > return () >> > >> > Thank you for your help, I really owe haskell-cafe. >> > >> > Greetings Tsunkiet Man >> > _______________________________________________ >> > Haskell-Cafe mailing list >> > Haskell-Cafe@haskell.org >> > http://www.haskell.org/mailman/listinfo/haskell-cafe >> > >> > > > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe