加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scalaz镜头组成

发布时间:2020-12-16 19:07:09 所属栏目:安全 来源:网络整理
导读:这里真的很简单的问题看完镜头之后, http://www.youtube.com/watch?v=efv0SQNde5Q 我以为我可以尝试一下这个简单的例子: import scalaz.Lens._fst.andThen(snd).set(((1,2),3),9) 其次是这个错误 error: type mismatch; found : scalaz.Lens[(Nothing,Nothi
这里真的很简单的问题看完镜头之后,

http://www.youtube.com/watch?v=efv0SQNde5Q

我以为我可以尝试一下这个简单的例子:

import scalaz.Lens._
fst.andThen(snd).set(((1,2),3),9)

其次是这个错误

error: type mismatch;
 found   : scalaz.Lens[(Nothing,Nothing),Nothing]
 required: scalaz.Lens[(Nothing,C]
Note: Nothing <: C,but class Lens is invariant in type B.
You may wish to define B as +B instead. (SLS 4.5)
              fst.andThen(snd).set(((1,3))
                      ^

关于如何使这项工作有任何想法?

解决方法

你将需要帮助编译器一点点.以下任何一个都可以:

(fst andThen snd[Int,Int]).set(((1,9)

要么:

(fst[(Int,Int),Int] andThen snd).set(((1,9)

我的猜测是,爱德华·凯特特(Edward Kmett)在谈话中掩盖了这个问题,因为它与他的主题没有真正的关联 – 它只是斯卡拉类型推理系统(烦人的)怪癖之一.例如,在Haskell中,以下内容将会很好:

setL (sndLens . fstLens) 9 ((1,3)

有关Scala中类型推断的限制的更多信息,您可以阅读答案here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读