On Wed, Sep 19, 2012 at 7:24 PM,  <sdiy...@sjtu.edu.cn> wrote:
> main = do
>         let
>                 f 0 acc = return acc
>                 f n acc = do
>                     v  <- return 1
>                     f (n-1) (v+acc)
>         f 1000000 100 >>= print

Try this

main = do
        let
                f :: Int -> Int -> IO Int
                f 0 !acc = return acc  -- note strict accumulator
                f n acc = do
                    v  <- return 1
                    f (n-1) (v+acc)
        f 1000000 100 >>= print

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

Reply via email to