gpt4 book ai didi

scala - scala 中的函数库(如 Cats 和 ScalaZ)中的类型类与数据类型

转载 作者:行者123 更新时间:2023-12-01 10:19:10 24 4
gpt4 key购买 nike

ScalaZ 和 Cats 都具有类型类和数据类型的概念。

虽然我了解类型类和类型类实例,但我不了解它们对术语“数据类型”的使用。

KleisiEither 这样的东西被称为 “数据类型” - 为什么?我的理解是它们是“可能”使用这些类型类实现的通用功能,但是即使在 Scala 中的 FP 编程一书中,它们也没有被称为 “数据类型”

不知道这个词是怎么来的?

例子:

最佳答案

我想说这主要是 Haskell 的影响:

  • 您在 Haskell 中声明为 class 的所有内容都称为“类型类”,通常位于 cats._
  • 您在 Haskell 中声明为 data 的所有内容都称为“数据类型”,并以 cats.data._
  • 结尾
  • 通常在 Haskell 中使用 instance 关键字实现的类型类的实例都在 cats.instances._

“类型类”是一个保留短语,具有相当精确的含义:它是一种语言特性或设计模式,可以实现即席多态。它发生在多种语言中。实现细节可能有所不同(它内置在 Haskell 中,但通过 Scala 中具有(更高种类的)类型参数的类进行模拟),但本质或多或少是相同的。

“数据类型”似乎没有任何如此精确的含义——至少它与“代数数据类型”或“广义代数数据类型”不同。我目前的猜测是,它或多或少是“在 Haskell 中使用 data 关键字声明的所有内容”的通俗术语,因此,本质上,它只是代表某些数据结构的一堆类可以以类型安全的方式使用和组合。

关于scala - scala 中的函数库(如 Cats 和 ScalaZ)中的类型类与数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56877695/

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