gcanti / fp-ts-rxjs

fp-ts bindings for RxJS
https://gcanti.github.io/fp-ts-rxjs/
MIT License
188 stars 29 forks source link

fold and foldTask? #13

Open pbadenski opened 5 years ago

pbadenski commented 5 years ago

These can be easily written by a user, but I was wondering if it's worth adding to this library (or least have a section for recipes?). At least in our project these use cases are quite common.

const fold = <T, O extends ObservableInput<T>> (obs: Observable<O>) =>
  observable.chain<O, T>(t => from(t))(obs);

const foldTask = <T> (obs: Observable<task.Task<T>>) => {
  observable.chain<task.Task<T>, T>(t => from(t()))(obs);
};
waynevanson commented 3 years ago
const fold = <T, O extends ObservableInput<T>> (obs: Observable<O>) =>
  observable.chain<O, T>(t => from(t))(obs);

@pbadenski fold Is an unsafe cast. Perhaps just use map(a => a as Observable<T>).

fromTask and fromObservable were added by #20 and #21.

foldTask is now just chain(fromTask), which seems like it should just be done inline, instead of being exposed as a helper function.