/** * Returns the first event in this collection of events. If multiple events * occur in parallel and before any other events then any of these events * may be returned. * * @tsplus getter ParSeq first */ export function first(self: ParSeq): Maybe { // eslint-disable-next-line no-constant-condition while (1) { switch (self._tag) { case "Single": { return Maybe.some(self.a) } case "Empty": { return Maybe.none } case "Both": { self = self.left break } case "Then": { self = self.left break } } } throw new Error("Bug") }