【问题标题】:Describe what is an algebra? [closed]描述什么是代数? [关闭]
【发布时间】:2017-10-25 00:24:42
【问题描述】:

在函数式编程世界中,当我想设计一个 API 时,我会遇到代数 api 这个词。 有人可以描述一下,在设计 API 的情况下,FP 中的代数是什么。

哪些组件构建了代数 API?法律、运营等?

有一个词primitive,到底什么是primitive?请给我一个例子。

【问题讨论】:

  • 没有“代数”这样的东西。 Algebra 是数学领域。 API 是程序员可以使用的东西。 algebra API 是程序员可以用来做数学运算的一些代码。
  • 不,和数学代数无关,但它叫作代数。
  • 是的,有代数这样的东西。 Here 就是一个例子。我认为这与问题无关,但我不明白这个问题。
  • 您是如何确切遇到这个概念的?更具体。
  • @zero_coding 它实际上确实与数学代数有很大关系,这就是它被称为代数的原因。

标签: scala haskell functional-programming


【解决方案1】:

我想你指的是algebraic data types

产品类型

ADT 的一个常见类别是产品类型。例如,“用户”可以描述为“姓名”、“电子邮件地址”和“年龄”的组合:

case class User(name : String, email : String, age : Int)

这被称为“产品”类型,因为我们可以使用乘法计算可能的不同用户的数量:

不同用户数 =(不同姓名数)x(不同电子邮件数)x(不同年龄数)

求和类型

另一个常见的 ADT 类是 sum 类型。例如,用户可以是普通用户或管理员:

sealed trait User

case class CommonUser(name : String) extends User

case class AdminUser(name : String, powers : Set[AdminPowers]) extends User

这被称为“和”类型,因为我们可以使用加法计算可能的不同用户的数量:

distinct user count = (distinct common user count) + (distinct admin user count)

【讨论】:

  • 一点也不。设计api的方法及遵循规律等?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
相关资源
最近更新 更多