Module

Control.XStream

Package
purescript-xstream
Repository
justinwoo/purescript-xstream

#STREAM Source

data STREAM :: Effect

#Subscription Source

#EffS Source

type EffS e a = Eff (stream :: STREAM | e) a

#Listener Source

type Listener e a = { complete :: Unit -> EffS e Unit, error :: Error -> EffS e Unit, next :: a -> EffS e Unit }

#Producer Source

type Producer e a = { start :: Listener e a -> EffS e Unit, stop :: Unit -> EffS e Unit }

#defaultListener Source

defaultListener :: forall a e. Listener (console :: CONSOLE | e) a

#addListener Source

addListener :: forall a e. Listener e a -> Stream a -> EffS e Unit

#removeListener Source

removeListener :: forall a e. Listener e a -> Stream a -> EffS e Unit

#subscribe Source

subscribe :: forall a e. Listener e a -> Stream a -> EffS e Subscription

To cancel a subscription use cancelSubscription.

#cancelSubscription Source

#bindEff Source

bindEff :: forall b a e. Stream a -> (a -> EffS e (Stream b)) -> EffS e (Stream b)

Like bind/>>=, but for effects.

#delay Source

delay :: forall a e. Int -> Stream a -> EffS (timer :: TIMER | e) (Stream a)

#drop Source

drop :: forall a. Int -> Stream a -> Stream a

#endWhen Source

endWhen :: forall b a. Stream b -> Stream a -> Stream b

#filter Source

filter :: forall a. (a -> Boolean) -> Stream a -> Stream a

#fold Source

fold :: forall b a. (b -> a -> b) -> b -> Stream a -> Stream b

#imitate Source

imitate :: forall a e. Stream a -> Stream a -> EffS e (Either Error Unit)

#last Source

last :: forall a. Stream a -> Stream a

#mapTo Source

mapTo :: forall b a. b -> Stream a -> Stream b

#startWith Source

startWith :: forall a. a -> Stream a -> Stream a

#switchMap Source

switchMap :: forall b a. Stream a -> (a -> Stream b) -> Stream b

Like bind/>>=, but switches to the latest emitted source using flatten.

#switchMapEff Source

switchMapEff :: forall b a e. Stream a -> (a -> EffS e (Stream b)) -> EffS e (Stream b)

Like bindEff, but switches to the lattest emitted source using flatten.

#replaceError Source

replaceError :: forall a. (Error -> Stream a) -> Stream a -> Stream a

#take Source

take :: forall a. Int -> Stream a -> Stream a

#shamefullySendNext Source

shamefullySendNext :: forall a e. a -> Stream a -> EffS e Unit

Hacky 'hidden' method for sending next to a Stream like with Subjects. This may only work with streams created with create'.

#shamefullySendError Source

shamefullySendError :: forall a e. Error -> Stream a -> EffS e Unit

#shamefullySendComplete Source

shamefullySendComplete :: forall a e. Unit -> Stream a -> EffS e Unit

#fromCallback Source

fromCallback :: forall b a e. ((a -> EffS e Unit) -> EffS e b) -> EffS e (Stream a)

create a Stream from a callback

#fromAff Source

fromAff :: forall e a. Aff (ref :: REF, stream :: STREAM | e) a -> Eff (ref :: REF, stream :: STREAM | e) (Stream a)

create a Stream from an Aff

#create Source

create :: forall a e. Producer e a -> EffS e (Stream a)

#create' Source

create' :: forall a e. EffS e (Stream a)

for creating a Stream without a producer. Used for imitate.

#createWithMemory Source

createWithMemory :: forall a e. Producer e a -> EffS e (Stream a)

#flatten Source

flatten :: forall a. Stream (Stream a) -> Stream a

#flattenEff Source

flattenEff :: forall a e. Stream (Eff e (Stream a)) -> EffS e (Stream a)

#fromArray Source

fromArray :: forall a. Array a -> Stream a

#never Source

never :: forall a. Stream a

#periodic Source

periodic :: forall e. Int -> EffS (timer :: TIMER | e) (Stream Int)

#remember Source

remember :: forall a. Stream a -> Stream a

#throw Source

throw :: forall a. Error -> Stream a