Как реализовать Future как Applicative в Scala?

Предположим, мне нужно выполнить два параллельных вычисления, дождаться их обоих, а затем объединить их результаты. Более конкретно мне нужно запуститьf1: X1 => Y1 а такжеf2: X2 => Y2 одновременно, а затем позвонитеf: (Y1, Y2) => Y чтобы наконец получить значениеY.

Я могу создатьбудущие вычисления fut1: X1 => Future[Y1] а такжеfut2: X2 => Future[Y2] а затем составить их, чтобы получитьfut: (X1, X2) => Future[Y] с использованием монадической композиции.

Проблема в том, что монадная композиция подразумеваетпоследовательное ожидание, В нашем случае это означает, что мы сначала ждем одного будущегоа потом мы будем ждать другого. Например. если это займет 2 сек. до первого будущего, чтобы закончить и только 1 сек. во 2-ое будущее, чтобы потерпеть неудачу, мы тратим 1 сек.

Таким образом, похоже, что нам нужноаппликативны состав фьючерсов ждать доили и полное или по крайней мере одно будущее терпит неудачу. Имеет ли это смысл ? Как бы вы реализовали<*> для фьючерсов?

Ответы на вопрос(1)

Ваш ответ на вопрос