Rattus-0.1.0.0: src/Rattus.hs
{-# OPTIONS -fplugin=Rattus.Plugin #-}
-- | The bare-bones Rattus language. To program with streams and
-- events import "Rattus.Stream" and "Rattus.Events"; to program with
-- Yampa-style signal functions import "Rattus.Yampa".
module Rattus (
module Rattus.Primitives,
module Rattus.Strict,
Rattus(..),
(|*|),
(|**),
(<*>),
(<**))
where
import Rattus.Plugin
import Rattus.Strict
import Rattus.Primitives
import Prelude hiding ((<*>))
-- all functions in this module are in Rattus
{-# ANN module Rattus #-}
-- | Applicative operator for 'O'.
(<*>) :: O (a -> b) -> O a -> O b
f <*> x = delay (adv f (adv x))
-- | Variant of '(<*>)' where the argument is of a stable type..
(<**) :: Stable a => O (a -> b) -> a -> O b
f <** x = delay (adv f x)
-- | Applicative operator for 'Box'.
(|*|) :: Box (a -> b) -> Box a -> Box b
f |*| x = box (unbox f (unbox x))
-- | Variant of '(|*|)' where the argument is of a stable type..
(|**) :: Stable a => Box (a -> b) -> a -> Box b
f |** x = box (unbox f x)