[Haskell-cafe] wxHaskell not in scope

minh thu noteed at gmail.com
Fri Apr 17 02:42:20 EDT 2009


Hi,
you can use http://hpaste.org/ to overcome this problem.

Cheers,
Thu

2009/4/17 Tsunkiet Man <temp.tsun at gmail.com>:
> PS: if the indents are wrong, that's because of gmail copy and past, Im so
> sorry.
>
> 2009/4/17 Tsunkiet Man <temp.tsun at gmail.com>
>>
>> Hello,
>>
>> what you suggested worked! Im very happy with it. However another error
>> suddenly came up. It sais the last statement in a 'do' must be an
>> expression, he is refering to line 41:45
>>
>> I change my code to this:
>>
>>                     on (menu exit) := close f,
>>                     on (menu open) := onOpen f dt vFile ]
>>
>>             return ()
>>
>>             where
>>                 onOpen :: Frame a -> staticText c -> Var b -> IO ()
>>                 onOpen frame stat var = do   file <- fileOpenDialog frame
>> False True "Open File" [("PGM bestanden (*.pgm)",["*.pgm"]),("Alle bestanden
>> (*.*)",["*.*"])] "" ""
>>                                         case file of
>>                                             Nothing ->      return ()
>>                                             Just file ->    set stat [text
>> := "HELLO"]
>>                                                             return ()
>>
>> As far as I can tell, if the file is nothing it will return something of
>> IO () and if the file is something it will return something of IO (). So
>> that error is kind of strange in my opinion. Do you know what caused it?
>>
>> Thanks for your help!
>>
>> 2009/4/17 Lennart Augustsson <lennart at augustsson.net>
>>>
>>> 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
>>> >>> >
>>> >>> >
>>> >>
>>> >
>>> >
>>
>
>
> _______________________________________________
> 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