S.all should return all `N` cases instead of the first.
Initially I was modelling this after Promise.all. But there's a good reason Promise.all only returns the first rejection - Promises may never resolve.
But for Either
we're potentially losing error information that we are guaranteed to have in the same frame so there's no reason to return a single error afaic.
It's possible to do something similar with ys
and ns
but it's annoying:
// old
S.ns(xs).length > 0 ? S.N(S.ns(xs)) : S.Y(S.ys(xs))
// new
S.all(xs)