packages feed

reactor-0.1.3: Reactor/Subscription.hs

{-# LANGUAGE DeriveDataTypeable #-}
module Reactor.Subscription
  ( Subscription(..)
  ) where

import Control.Applicative
import Reactor.Task
import Data.Monoid
import Data.Typeable

-- Like in real life, cancelling a subscription may not stop it from sending you stuff immediately!
newtype Subscription = Subscription { cancel :: Task () }
  deriving Typeable

instance Monoid Subscription where
  mempty = Subscription (return ())
  Subscription a `mappend` Subscription b = Subscription (a *> b)