首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用函数器提升接受隐式参数的函数(Scalaz7)

使用函数器提升接受隐式参数的函数(Scalaz7)
EN

Stack Overflow用户
提问于 2016-07-11 14:20:32
回答 0查看 152关注 0票数 0

刚刚开始学习Scalaz。以下是我的代码

代码语言:javascript
复制
trait Monoid[A] {
     def mappend(a1: A, a2: A): A
     def mzero: A
}

object Monoid {
    implicit val IntMonoid: Monoid[Int] = new Monoid[Int] {
        def mappend(a1: Int, a2: Int): Int = a1 + a2
        def mzero: Int = 0
    }

    implicit val StringMonoid: Monoid[String] = new Monoid[String] {
        def mappend(a1: String, a2: String): String = a1 + a2
        def mzero: String = ""
    }
}

trait MonoidOp[A] {
    val F: Monoid[A]
    val value: A
    def |+|(a2: A): A = F.mappend(value, a2)
}

object MonoidOp{
    implicit def toMonoidOp[A: Monoid](a: A): MonoidOp[A] = new MonoidOp[A]{
        val F = implicitly[Monoid[A]]
        val value = a
    }
}

我已经定义了一个函数(只是为了它)

代码语言:javascript
复制
def addXY[A: Monoid](x: A, y: A): A = x |+| y

我想提升它,这样它就可以使用Option、List等容器。

代码语言:javascript
复制
def addXYOptioned = Functor[Option].lift(addXY)

上面写着error: could not find implicit value for evidence parameter of type scalaz.Monoid[A] def addOptioned = Functor[Option].lift(addXY)

如何提升这些功能?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38300335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档