在函数式编程世界中,当我想设计一个API时,我会遇到单词代数api。 有人可以在设计API的背景下描述FP中的代数是什么。
哪些组件构建了代数api?法律,运营等。?
有一个单词原语,究竟是什么原语?请给我看一个例子。
答案 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
这被称为"总和"键入因为我们可以使用加法计算可能不同用户的数量:
不同的用户数=(不同的普通用户数)+(不同的管理员用户数)