描述什么是代数?

时间:2017-05-24 14:59:52

标签: scala haskell functional-programming

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

哪些组件构建了代数api?法律,运营等。?

有一个单词原语,究竟是什么原语?请给我看一个例子。

1 个答案:

答案 0 :(得分:6)

我认为你指的是algebraic data types

产品类型

常见的ADT类是产品类型。例如,"用户"可以被描述为" name","电子邮件地址"和"年龄"的组合:

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

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

  

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

总和类型

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

sealed trait User

case class CommonUser(name : String) extends User

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

这被称为"总和"键入因为我们可以使用加法计算可能不同用户的数量:

  

不同的用户数=(不同的普通用户数)+(不同的管理员用户数)