Я не могу реализовать монаду для составления функции. Выдает ошибку для понимания того, что «значение withFilter не является членом MonadFunctionComposition.Writer»
object MonadFunctionComposition extends App {
case class Writer(value1: Int, value2: Int, logs: String) {
def map(x : (Int, Int) => Int): Writer = {
Writer( x(value1, value2), x(value1, value2), logs)
}
def flatMap(x: (Int, Int) => Writer): Writer = {
val temp = x(value1, value2)
val temp1 = x(value2, value2)
Writer(temp.value1, temp1.value2, logs + "..." + temp.logs)
}
}
val f: (Int, Int) => Writer = (value1, value2) => {
Writer(value1 + 57, value2 - 2, s"execute function f with $value1 $value2 value.")
}
val g: (Int, Int) => Writer = (value1, value2) => {
Writer(value1 + 10, value2 - 1, s"execute function g with $value1 $value2 value.")
}
val result = for
{
(a,x) <- g(5, 100)
b <- f(a,x)
} yield b
// val result = g(5, 100).flatMap((a,b) => f(a, b))
println(s"Result $result")
}