purescript-0.9.1: examples/passing/Fib.purs
module Main where
import Prelude
import Control.Monad.Eff (whileE)
import Control.Monad.Eff.Console (log, logShow)
import Control.Monad.ST (runST, newSTRef, readSTRef, writeSTRef)
main = do
runST do
n1 <- newSTRef 1.0
n2 <- newSTRef 1.0
whileE ((>) 1000.0 <$> readSTRef n1) $ do
n1' <- readSTRef n1
n2' <- readSTRef n2
writeSTRef n2 $ n1' + n2'
writeSTRef n1 n2'
logShow n2'
log "Done"