I tried that and I got the following error:
   
A pattern type signature cannot bind scoped type variables `a'
      unless the pattern has a rigid type context
    In the pattern: x :: Selenium a -> IO (Either String a)
    In a stmt of a 'do' expression:
        (x :: Selenium a -> IO (Either String a)) <- start
                                                       "https://www.google.com"
    In the expression:
        do { (x :: Selenium a -> IO (Either String a)) <- start "https://www.google.com";


Then I tried to add "forall a" but the Selenium library doesn't use forall so there was a conflict. Is there a way to work around the rigid type error you know of?

Thanks

On Apr 15, 3:14 pm, Brent Yorgey <byorgey@seas.upenn.edu> wrote:
> On Sun, Apr 04, 2010 at 09:25:16PM -0400, MH wrote:
> > I am running the following code that is using Selenium. If you look at
> > the function "start", you will see that the return type of the
> > function is polymorphic. Now in main function, I call start function
> > to get selenium IO monad and sequentially call selenium commands
> > (open, doCommand etc...). The problem that I have here is, while I can
> > call all Selenium commands with signature (String  -> Selenium
> > String), I can't call commands with signature (String  -> Selenium
> > Bool). As I understand it, even though "start" function shall return
> > IO (Selenium a -> IO (Either String a)), it actually return IO
> > (Selenium String -> IO (Either String String)).
>
> Hmm, I must confess that I don't understand exactly what is going on
> here.  One thing to try is to give an explicit type annotation at
> start's call site, something like
>
> > main = do
> >     (selenium :: Selenium a -> IO (Either String a)) <- start "http://www.google.com"
> >     selenium $ open "/"
> >     selenium $ doCommand SWindowMaximize []
> >     selenium $ typeText (Name "q") "stuff"
> >     selenium $ clickAndWait (Name "btnG")
> >      return selenium
>
> Does that help?
>
> -Brent
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.orghttp://www.haskell.org/mailman/listinfo/beginners