[Haskell-cafe] wxHaskell not in scope
lennart at augustsson.net
Thu Apr 16 18:54:04 EDT 2009
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.tsun at 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 <lennart at 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.tsun at gmail.com>
>> > 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 at haskell.org
>> > http://www.haskell.org/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe