lazy-async-1.0.0.0: lazy-async.cabal
cabal-version: 3.0
name: lazy-async
version: 1.0.0.0
synopsis: Asynchronous actions that don't start right away
description:
Sometimes we have a bunch of 'IO' actions that do things like
read files, make HTTP requests, or query a database. Some of the
information that these actions produce might not end up being
needed, depending on the breaks. In the interest of avoiding
unnecessary effort, we don't want to simply run all the actions
and collect their results upfront. We also don't want to simply
run an action right before its result is needed, because it might
be needed in more than one place, which opens the possibility of
unnecessarily running the same action more than once. In
situations like these, we use "LazyAsync".
Under the hood, an 'IO' action is turned into a @LazyAsync@ by
constructing two things: An @Async@ (from the @async@ package),
and a @TVar Bool@ (from the @stm@ package). The TVar, initialized
to @False@, indicates whether the action is wanted yet. The async
thread waits until the TVar turns @True@ and then runs the action.
homepage: https://github.com/typeclasses/lazy-async
bug-reports: https://github.com/typeclasses/lazy-async/issues
author: Chris Martin
maintainer: Chris Martin, Julie Moronuki
copyright: 2021 Mission Valley Software LLC
license: MIT
license-file: license.txt
category: Concurrency
build-type: Simple
source-repository head
type: git
location: https://github.com/typeclasses/lazy-async
common language
default-language: Haskell2010
ghc-options: -Wall
default-extensions: DeriveFoldable
default-extensions: DeriveFunctor
default-extensions: DeriveTraversable
default-extensions: ExistentialQuantification
default-extensions: FlexibleContexts
default-extensions: NoImplicitPrelude
default-extensions: StandaloneDeriving
common dependencies
build-depends: base ^>= 4.14 || ^>= 4.15
build-depends: exceptions ^>= 0.10.4
build-depends: lifted-async ^>= 0.10.0.6
build-depends: monad-control ^>= 1.0.2.3
build-depends: rank2classes ^>= 1.4.0.1
build-depends: stm ^>= 2.5
build-depends: transformers ^>= 0.5.6.2
build-depends: transformers-base ^>= 0.4.5.1
common test-language
import: language
default-extensions: BlockArguments
default-extensions: OverloadedStrings
default-extensions: TemplateHaskell
common test-dependencies
import: dependencies
build-depends: hedgehog ^>= 1.0.4
build-depends: lazy-async
build-depends: optics-core ^>= 0.3 || ^>= 0.4
build-depends: optics-th ^>= 0.3 || ^>= 0.4
common test-modules
other-modules: Test.Counter
other-modules: Test.Exceptions
other-modules: Test.General
other-modules: Test.Optics
other-modules: Test.Person
common test
import: test-language, test-dependencies, test-modules
library
import: language, dependencies
hs-source-dirs: src
exposed-modules: LazyAsync
other-modules: LazyAsync.Actions
other-modules: LazyAsync.Actions.Empty
other-modules: LazyAsync.Actions.Memoize
other-modules: LazyAsync.Actions.Merge
other-modules: LazyAsync.Actions.Poll
other-modules: LazyAsync.Actions.Pure
other-modules: LazyAsync.Actions.Spawn
other-modules: LazyAsync.Actions.Start
other-modules: LazyAsync.Actions.StartWait
other-modules: LazyAsync.Actions.Wait
other-modules: LazyAsync.Libraries.Async
other-modules: LazyAsync.Libraries.Rank2
other-modules: LazyAsync.Orphans
other-modules: LazyAsync.Prelude
other-modules: LazyAsync.Types
other-modules: LazyAsync.Types.Complex
other-modules: LazyAsync.Types.LazyAsync
other-modules: LazyAsync.Types.NoAlternative
other-modules: LazyAsync.Types.Outcome
other-modules: LazyAsync.Types.Resource
other-modules: LazyAsync.Types.StartPoll
other-modules: LazyAsync.Types.Status
test-suite test
import: test
hs-source-dirs: test
type: exitcode-stdio-1.0
main-is: test.hs