Question
Given Array<IOEither<E, A>>
.
Count how many lefts and rights. Result should be IO<{ success: number, failure: number }>
(or IO<[number, number]>
).
Answer
Using wilt
(from Witherable):
import { array } from 'fp-ts/lib/Array'
import { identity } from 'fp-ts/lib/function'
import { io, IO } from 'fp-ts/lib/IO'
import { IOEither } from 'fp-ts/lib/IOEither'
import { Separated } from 'fp-ts/lib/Compactable'
declare const xs: Array<IOEither<Error, number>>
const result: IO<Separated<Error[], number[]>> = array.wilt(io)(xs, identity)