[Haskell-cafe] Newbie type question for wxHaskell learner

Daniel Fischer daniel.is.fischer at googlemail.com
Fri Jan 7 20:21:21 CET 2011


On Friday 07 January 2011 19:45:26, b1g3ar5 wrote:
> Nearly - the first suggestion doesn't work because each es needs a new
> panel I can't use the same one each time.
>
> The second suggestion doesn't quite work because the x in [text :=
> contents x] is not in scope of the \p function.

Hmm,

Prelude Graphics.UI.WX> :t \w ->  mapM (\x -> panel w [] >>= \p -> textCtrl 
p [text := x])
\w ->  mapM (\x -> panel w [] >>= \p -> textCtrl p [text := x])
  :: Window a -> [String] -> IO [TextCtrl ()]

x is in scope as far as I can tell, the mapM'd lambda is

mapM (\x -> (panel nb [] >>= \p -> textCtrl p [text := contents x])) 
my_list

or

mapM foo my_list
   where
      foo x = do
                p <- panel nb []
                textCtrl p [text := contents x]

x is bound in a scope enclosing p's scope, so it is (or should be) 
available.

What does the compiler say exactly?




More information about the Haskell-Cafe mailing list