Форк Присоединиться к универсальной монаде скала? - PullRequest
0 голосов
/ 14 декабря 2018

Можно ли выразить это обобщенным образом, используя кошки или скалязы, это?

val common: F[Common] = ...
val a: F[A] = common.flatMap(commonToA)
val b: F[B] = common.flatMap(commonToB)
val result: F[(A,B)] =  a someFunctionToProduct b

И убедиться, что эффект common эффективно выполняется только один раз?

1 Ответ

0 голосов
/ 14 декабря 2018

Наконец-то знаю, как.Я могу сделать вместо:

val common: F[Common] = ...
val fab = common.flatMap{
  c=>
     commonToA(c).zip(commonToB(c))
}
...