gpt4 book ai didi

Scalaz 透镜组成

转载 作者:行者123 更新时间:2023-12-01 21:57:29 26 4
gpt4 key购买 nike

这是一个非常简单的问题。观看精彩的镜头介绍后:

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, 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,2),3))
^

关于如何实现这项工作有什么想法吗?

最佳答案

您将需要为编译器提供一些帮助。以下任一操作均可:

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

或者:

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

我的猜测是,Edward Kmett 在演讲中掩盖了这个问题,因为它与他的主题并不真正相关——这只是 Scala 类型推断系统的(烦人的)怪癖之一。例如,在 Haskell 中,以下内容就可以了:

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

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

关于Scalaz 透镜组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com