This package works like Data.IORef, but in the Fay monad. It allows you to create mutable variables and update them from within Fay.
main :: Fay () main = do fr <- newFayRef (10 :: Int) readFayRef fr -- Should give 10. writeFayRef fr 20 readFayRef fr -- Should give 20. modifyFayRef fr (*2) readFayRef fr -- Should give 40. -- The above was non-strict; here is the strict variant. modifyFayRef' fr (*2) readFayRef fr -- Should give 80. return ()
To use this with fay, cabal install the package which will put the source files in fay ~/.cabal/share/fay-ref-0.1.0.0/src. You can then compile with fay using
fay --package fay-ref MyFile.hs