packages feed

purescript-0.15.15: tests/purs/passing/Fib.purs

module Main where

import Prelude
import Effect.Console (log)
import Control.Monad.ST as ST
import Control.Monad.ST.Ref as STRef

fib :: Number
fib = ST.run do
    n1 <- STRef.new 1.0
    n2 <- STRef.new 1.0
    ST.while ((>) 1000.0 <$> STRef.read n1) do
      n1' <- STRef.read n1
      n2' <- STRef.read n2
      _ <- STRef.write (n1' + n2') n2
      STRef.write n2' n1
    STRef.read n2

main = do
  log "Done"