On Monday 07 Feb 2005 9:28 am, Simon Peyton-Jones wrote: > Good point. Yes you can rely on it; but the binding is lazy. So for > this > > h :: Int -> (# String, String #) > h = ... > > > f x = let (# p,q #) = h x in ... > > you'll get > > f x = let (p,q) = case h x of (# p,q #) -> (p,q) > in ... > > So the call to h only happens when either p or q is used. > > On the other hand, if any of the binders in a let-pattern has an > unlifted type (e.g. Int#) then the whole pattern match becomes strict. > So if p or q had an unlifted type, the match would be strict. > > I'll add a note to the usre manual.
Thanks. Sorry if I'm being a bit dim, but could you tell me if ghc will optimise out the boxed tuple construction in both these cases? I guess the answer must be yes in the second case because AFAIK you can't build an ordinary tuple containing an Int#. (But maybe I'm wrong.) Regards -- Adrian Hey _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
