【问题标题】:What type of algebraic data type is Option[T] or Optional<T>Option[T] 或 Optional<T> 是什么类型的代数数据类型
【发布时间】:2018-05-09 14:19:52
【问题描述】:

据我了解,代数数据类型 (ADT) 有两种类型。对于 Scala 中的 Option[T] 或 Java 中的 Optional&lt;T&gt;,这是 sum 类型还是 product 类型的示例?

【问题讨论】:

  • 如果您认为Optional&lt;T&gt;T 或不是T,我很确定您可以弄清楚。
  • 因为它是固定好的

标签: functional-programming algebraic-data-types


【解决方案1】:

在 Haskell 中定义 Option[T] 类型可以清楚地表明它是一个 sum 类型。

data Option t = None | Some t

Option t 类型的值可以是以下两种情况之一:

  1. None
  2. Some t

所以Option[T]Optional&lt;T&gt; 都采用T 类型,然后再添加1 个可能的值(None)。


为了好玩,我们也可以把这个 ADT 翻译成代数方程:

Option(t) = 1 + t

要了解原因,请参阅此问题:Abusing the algebra of algebraic data types - why does this work?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多