diff --git a/src/Wire/Event.purs b/src/Wire/Event.purs index b4e9d4c..15e17a6 100644 --- a/src/Wire/Event.purs +++ b/src/Wire/Event.purs @@ -20,12 +20,12 @@ import Unsafe.Reference (unsafeRefEq) import Wire.Event.Queue as Queue newtype Event a - = Event (Subscriber a -> Effect Canceller) + = Event (Subscriber a -> Effect Canceler) type Subscriber a = a -> Effect Unit -type Canceller +type Canceler = Effect Unit create :: forall a. Effect { event :: Event a, push :: a -> Effect Unit, cancel :: Effect Unit } @@ -44,10 +44,10 @@ create = do Ref.modify_ (Array.deleteBy unsafeRefEq subscriber) subscribers pure { event, push: queue.push, cancel: queue.kill } -makeEvent :: forall a. (Subscriber a -> Effect Canceller) -> Event a +makeEvent :: forall a. (Subscriber a -> Effect Canceler) -> Event a makeEvent = Event -subscribe :: forall a. Event a -> Subscriber a -> Effect Canceller +subscribe :: forall a. Event a -> Subscriber a -> Effect Canceler subscribe (Event event) = event filter :: forall a. (a -> Boolean) -> Event a -> Event a @@ -114,7 +114,7 @@ fromFoldable xs = liftEffect do emit x Aff.delay (Milliseconds 0.0) pure do - Aff.launchAff_ do Aff.killFiber (Aff.error "cancelled") fiber + Aff.launchAff_ do Aff.killFiber (Aff.error "canceled") fiber range :: Int -> Int -> Event Int range start end = @@ -131,7 +131,7 @@ range start end = pure (Done unit) fiber <- Aff.launchAff do tailRecM go start pure do - Aff.launchAff_ do Aff.killFiber (Aff.error "cancelled") fiber + Aff.launchAff_ do Aff.killFiber (Aff.error "canceled") fiber where step = if start < end then 1 else -1 diff --git a/src/Wire/Event/Time.purs b/src/Wire/Event/Time.purs index bf1a044..1cfb9a9 100644 --- a/src/Wire/Event/Time.purs +++ b/src/Wire/Event/Time.purs @@ -35,7 +35,7 @@ interval spacing = do Aff.delay ms liftEffect do emit unit pure do - Aff.launchAff_ do Aff.killFiber (Aff.error "cancelling") fiber + Aff.launchAff_ do Aff.killFiber (Aff.error "canceling") fiber timer :: forall offset spacing. Duration offset => Duration spacing => offset -> spacing -> Event Unit timer offset spacing = delay offset do pure unit <|> interval spacing diff --git a/src/Wire/Signal.purs b/src/Wire/Signal.purs index 7ffc71a..a5c2219 100644 --- a/src/Wire/Signal.purs +++ b/src/Wire/Signal.purs @@ -3,7 +3,7 @@ module Wire.Signal where import Prelude import Effect (Effect) import Effect.Ref as Ref -import Wire.Event (Event) +import Wire.Event (Canceler, Event, Subscriber) import Wire.Event as Event newtype Signal a @@ -33,6 +33,9 @@ create init = do signal = Signal { event: event', read: read', write: write', modify: modify' } pure { signal, cancel: inner.cancel } +subscribe :: forall a. Signal a -> Subscriber a -> Effect Canceler +subscribe (Signal s) = Event.subscribe s.event + event :: forall a. Signal a -> Event a event (Signal s) = s.event