packages feed

lazy-async-1.0.0.0: src/LazyAsync/Types/LazyAsync.hs

{-# language Safe #-}

module LazyAsync.Types.LazyAsync where

import LazyAsync.Types.Complex   (Complex (..))
import LazyAsync.Types.StartPoll (StartPoll)
import LazyAsync.Types.Status    (Status)

import LazyAsync.Prelude (Functor)

-- | An asynchronous action that does not start right away
data LazyAsync a =
    Empty -- ^ Triviality that gives rise to 'Control.Applicative.empty'
  | Pure a -- ^ Triviality that gives rise to 'Control.Applicative.pure'
  | A1 (StartPoll a) -- ^ A single action
  | A2 (Complex LazyAsync Status a) -- ^ A complex of two 'LazyAsync's
  deriving Functor