gpt4 book ai didi

scala - Monoid 类型注释

转载 作者:行者123 更新时间:2023-12-04 04:39:22 27 4
gpt4 key购买 nike

在 Scala 函数式编程一书中,我看到了以下签名:

def productMonoid[A,B](A: Monoid[A], B: Monoid[B]): Monoid[(A,B)]

描述是这样说的:
if types A and B are monoids, then the tuple type (A, B) is also a monoid

我很难理解以下部分:
A: Monoid[A]

A 是 Monoid 类型,它将自身作为类型参数?这怎么理解?

最佳答案

这里:A: Monoid[A] the 只是一个变量名,也可以写成 a: Monoid[A]param1: Monoid[A] .给这样的变量名有点惯例,例如在大多数情况下,仿函数的变量名是 F - F: Function[A]和 M 表示 Monad - M: Monad[A] :

abstract class SomeClass[TC[_], A](param: TC[A]) {
implicit val M: Monad[TC]
... // other code
}

如果您看到类似 M.point[TC] 的内容,它会更易读和清晰。其中 M 是 Monad 的一个实例.

已添加

A: Monoid[A]根本不是类型注释。类型参数写在方括号中:

def productMonoid [A,B] (参数...),所以在这个变体中:
def productMonoid[A: Monoid,B](params...)

Monoid[A]A 的类型类类型,它被脱糖为:
def productMonoid[A,B](params...)(implicit val $ev: Monoid[A])

这意味着 Monoid是一个类型构造函数,它接受一个类型 A并构造一个类型 Monoid[A]$ev .

关于scala - Monoid 类型注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153863/

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