gpt4 book ai didi

scala - 如何选择乘法幺半群而不是加法幺半群?

转载 作者:行者123 更新时间:2023-12-04 18:06:19 25 4
gpt4 key购买 nike

我想合并两个列表:

import scalaz.syntax.align._
import scalaz.std.list._
import scalaz.std.anyVal._

List(1, 2, 3).merge(List(4, 5, 6, 7)) // Evaluates to List(5, 7, 9, 7)

这隐式地使用标准加法幺半群。如果我想改用乘法幺半群怎么办?在 Scalaz 中这样做的惯用方法是什么?

最佳答案

您可以使用 Multiplication标记来指示您要使用乘法幺半群:

import scalaz.Tags.Multiplication

val xs = List(1, 2, 3).map(Multiplication(_))
val ys = List(4, 5, 6, 7).map(Multiplication(_))

进而:
scala> xs merge ys
res0: List[scalaz.@@[Int,scalaz.Tags.Multiplication]] = List(4, 10, 18, 7)
Multiplication.unwrap删除标签。

您也可以显式传入您自己的实例:
scala> List(1, 2, 3).merge(List(4, 5, 6, 7))(Monoid.instance(_ * _, 1))
res1: List[Int] = List(4, 10, 18, 7)

不过,使用标签更为惯用。

关于scala - 如何选择乘法幺半群而不是加法幺半群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26503385/

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