On Wed, Mar 18, 2009 at 6:21 AM, Chung-chieh Shan <[email protected]>wrote:
> Sebastiaan Visser <[email protected]> wrote in article < > [email protected]> in > gmane.comp.lang.haskell.cafe: > > Suppose I have a list of IO computations that depends on a few very > > time consuming pure operations. The pure operations are not dependent > > on the real world: > > > > > computation :: [IO Int] > > > computation = [ > > > smallIOfunc timeConsumingPureOperation0 > > > , smallIOfunc timeConsumingPureOperation1 > > > , smallIOfunc timeConsumingPureOperation2 > > > , smallIOfunc timeConsumingPureOperation3 > > > ] > > > where smallIOfunc a = print a >> return a > > I take it that, because you "do not really have the control to change > things `deep' inside the code", it is not an option to redefine > > computation = [ > smallIOfunc x0 > , smallIOfunc x1 > , smallIOfunc x2 > , smallIOfunc x3 > ] > where smallIOfunc a = print a >> return a > x0 = timeConsumingPureOperation0 > x1 = timeConsumingPureOperation1 > x2 = timeConsumingPureOperation2 > x3 = timeConsumingPureOperation3 Um, just to clarify, this code is exactly equivalent to the original, including sharing behavior. The only time a let (or where) clause changes sharing is if the variable is used more than once in the body. Luke
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
