Thank you for all the links
I have quite a bit to read on. Especially witchcarft, (even if it does seem a tad too complex to me. My team and I are no Haskell FP wizards, at least not yet).
I will check on to see if those libs have the features we use :
- ok/error chaining (obviously)
- intermediate error catching (error tuples, but also thrown error)
- we are able to manage the same workflows as we do now.
We have sort of complicated use cases, and Chain helps managing the complexity. (Like this one)
|> Chain.next(fn ids ->
Enum.map(ids, fn id ->
generation_opts = [
|> Chain.next(&ShiftSeriesAggregate.generate_future_shifts(&1, generation_opts))
|> Chain.recover(&log_individual_shift_error(&1, shift_series_id: id))
Chain misses a Promise.all equivalent, or anyway to manage Enumerable that have to be mapped to something else.