Hi,
In Hugs, the infered types for the following four functions:

f a = let m = id a in do return m
f' a = do m <- id a
          return m
g a = let m =[a,a] in do return m
g' a = do m <- [a,a]
          return m

respectively are
f :: Monad a => b -> a b
f' :: Monad a => a b -> a b
g :: Monad a => b -> a [b]
g' :: a -> [a]

I didn't expect this types, do you?
Anybody has some explanation?
Thanks in advance,
Paqui

---------------------------------
Paqui Lucio                               
Dpto de LSI                   
Facultad de Informática
Paseo Manuel de Lardizabal, 1
20080-San Sebastián
SPAIN
---------------------------------
e-mail: paqui.lucio@ehu.es
Tfn: (+34) (9)43 015049 
Fax: (+34) (9)43 015590
Web: http://www.sc.ehu.es/paqui
---------------------------------