packages feed

purescript-0.11.0: 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"