Jensen's Device: Difference between revisions

Content added Content deleted
No edit summary
Line 162: Line 162:
=={{header|Haskell}}==
=={{header|Haskell}}==
<pre>
<pre>
main = print (sum (map recip [1 .. 100]))
import Control.Monad
</pre>
import Control.Monad.ST
import Data.STRef

sum' ref_i lo hi term =
return sum `ap`
mapM (\i -> writeSTRef ref_i i >> term) [lo..hi]

foo = runST $ do
i <- newSTRef undefined -- initial value doesn't matter
sum' i 1 100 $ return recip `ap` readSTRef i

main = print foo
</pre>
</pre>
Output: 5.187377517639621
Output: 5.187377517639621