[Haskell-cafe] wxHaskell not in scope

Lennart Augustsson lennart at augustsson.net
Thu Apr 16 19:05:39 EDT 2009


Take a look at the syntax for 'let' inside a 'do'.

On Fri, Apr 17, 2009 at 12:57 AM, Tsunkiet Man <temp.tsun at gmail.com> wrote:
> PS: a small note, sorry for multiple mails.
>
> After doing the let ... in function it did not work. =( It gave the error
> that 'do' has to end with some result. I did:
>
> do let <the function> in <all the code that was behind the do>
>
> and it still didn't work =(. I'm doing something wrong I think.
>
> Thanks for your help.
>
> 2009/4/17 Tsunkiet Man <temp.tsun at gmail.com>
>>
>> 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>
>>> 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 at haskell.org
>>> > http://www.haskell.org/mailman/listinfo/haskell-cafe
>>> >
>>> >
>>
>
>


More information about the Haskell-Cafe mailing list