0

タグレスファイナルについて読みましたが、素晴らしいと思います。このパターンの独自の小さな例を作成したかったのですが、問題が発生しました。

これは私のコードです:

  trait Calculator[F[_]] {
    def sum(a: Int, b: Int): F[Either[Throwable, Int]]
    def minus(a: Int, b: Int): F[Either[Throwable, Int]]
  }

  object calculatorInstances {
    implicit val futureCalculator: Calculator[Future] = new Calculator[Future] {
      override def sum(a: Int, b: Int) =
        Future {
          Try(a + b).toEither
        }
      override def minus(a: Int, b: Int) =
        Future {
          Try(a - b).toEither
        }
    }
  }


  import calculatorInstances.futureCalculator
  def getPlusAndMinus[F[_]: Monad: Calculator](a: Int, b: Int): F[Either[String, Int]] = {
    for {
      sum <- Calculator[F].sum(a, b)
      res <- Calculator[F].minus(sum, b)
    } yield res
  }

エラーのため、このコードは機能しませんnot found: value Calculator。どうすれば適切に行うことができますか?

4

1 に答える 1