david48 <[EMAIL PROTECTED]> wrote:
> On 8/3/07, Neil Mitchell <[EMAIL PROTECTED]> wrote:
> >
> > Hmm, interesting. Consider:
> >
> > let x = 12
> > let x = (<- x)
> 
> Wouldn't that be forbidden ?
> 
> I'd expect the x in ( <- x ) have to be of type m a.
> 

Yes, unless of course you did:

    instance (Monad m, Num n) => Num (m n)

or some such nonsense. :)

> If you meant :
> 
> x <- return 12
> let x = ( <- x )

This would be equally wrong.  Perhaps you meant:

    do let x = return 12
       let x = (<- x)
       ...

Then this would become:

    do let x = return 12
       t1 <- x
       let x = t1
       ...

Which is, in turn:

    let x = return 12 in x >>= (\t1 -> let x = t1 in ...)

-- 
Chris Smith

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to