импортировать синтаксис скада монады вне функции - PullRequest
2 голосов
/ 21 апреля 2019

Есть ли способ избежать импорта монадного синтаксиса в теле всех моих функций?Вот что я застрял, написав:

object Example {
  def doMonadThings[M[_]: Monad, A](ma: M[A]): M[A] = {
    val monadSyntax = implicitly[MonadSyntax[M]]
    import monadSyntax._

    ma.flatMap { x => point(x) }
  }
}

scalaz 7.2

РЕДАКТИРОВАТЬ:

Вот что я закончил:

object Example {
  import scalaz.syntax.monad._

  def doMonadThings[M[_], A](ma: M[A])(implicit m: Monad[M]): M[A] =
    ma.flatMap { x => m.point(x) }
}

1 Ответ

3 голосов
/ 21 апреля 2019

Попробуйте

import scalaz.syntax.monad._

def doMonadThings[M[_]: Monad, A](ma: M[A]): M[A] = {
  ma.flatMap[A] { x => x.point }
}
...