{-# OPTIONS -fplugin=AsyncRattus.Plugin #-}


-- | The bare-bones Asynchronous Rattus language. To program with streams,
-- you can use "AsyncRattus.Stream".

module AsyncRattus (
  -- * Asynchronous Rattus language primitives
  module AsyncRattus.Primitives,
  -- * Strict data types
  module AsyncRattus.Strict,
  -- * Annotation
  AsyncRattus(..),
  -- * other
  mapO
  )
  where

import AsyncRattus.Plugin
import AsyncRattus.Strict
import AsyncRattus.Primitives

mapO :: Box (a -> b) -> O a -> O b
mapO :: forall a b. Box (a -> b) -> O a -> O b
mapO Box (a -> b)
f O a
later = b -> O b
forall a. a -> O a
delay (Box (a -> b) -> a -> b
forall a. Box a -> a
unbox Box (a -> b)
f (O a -> a
forall a. O a -> a
adv O a
later))