once

memoization for IO actions and functions https://gitlab.com/kaction/haskell-once

Version on this page:0.3
LTS Haskell 12.22:0.2
Stackage Nightly 2018-12-14:0.4
Latest on Hackage:0.4

See all snapshots once appears in

GPL-3 licensed by Dmitry Bogatov
Maintained by KAction@debian.org

Module documentation for 0.3

There are no documented modules for this package.

Package provides single polymorphic function once, that allows you to memoize IO actions and functions, evaluating them at most once.

let mkStamp = (putStrLn "stamping" >> writeFile "/tmp/stamp" "") :: IO ()
-- onceStamp :: IO ()
onceStamp <- once mkStamp
-- onceStamp actually evaluates mkStamp it wraps first time.
onceStamp
stamping
-- but second time result `()' is memoized, no action is performed.
onceStamp
-- we can memoize functions too
foo <- once $ \x -> print "foo" >> print (x :: Int)
-- action will be performed once for every distinct argument
foo 10
foo
10
foo 10
10
foo 4
foo
4
comments powered byDisqus