RosettaCodeData/Task/Jensens-Device/Haskell/jensens-device.hs
2023-07-01 13:44:08 -04:00

24 lines
493 B
Haskell

import Control.Monad.ST
import Data.STRef
sum_ :: STRef s Double -> Double -> Double
-> ST s Double -> ST s Double
sum_ ref lo hi term =
do
vs <- forM [lo .. hi]
(\k -> do { writeSTRef ref k
; term } )
return $ sum vs
foo :: Double
foo =
runST $
do ref <- newSTRef undefined
-- initial value doesn't matter
sum_ ref 1 100 $
do
k <- readSTRef ref
return $ recip k
main :: IO ()
main = print foo