On 7/20/2014 8:15 PM, Timon Gehr wrote:
So does Haskell.

import Control.Monad
import Control.Monad.ST
import Data.STRef

factorial :: Integer -> Integer
factorial n = runST $ do
   r <- newSTRef 1
   forM_ [1..n] $ \i->
     modifySTRef r (*i)
   readSTRef r

Would you rather write that or:

  int factorial(int i) pure {
    auto r = 1;
    foreach (i; 1..n + 1)
        r *= i;
    return r;
  }

And I'd love to see what native code is generated for the Haskell example.

Reply via email to