Jensen's Device: Difference between revisions
Content added Content deleted
(restore Haskell implementation: a list comprehension is certainly more idiomatic, but it isn't call-by-name) |
|||
Line 162: | Line 162: | ||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<pre> |
<pre> |
||
import Control.Monad |
|||
main = print (sum [ 1/n | n <- [1..100] ]) |
|||
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 |