什么类型的代数数据类型是Option [T]或Optional <t>

时间:2017-11-26 02:12:50

标签: functional-programming algebraic-data-types

所以我的理解是有两种类型的代数数据类型(ADT)。对于Scala中的Option[T]或Java中的Optional<T>,这是sum类型还是产品类型的示例?

1 个答案:

答案 0 :(得分:2)

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

data Option t = None | Some t

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

  1. None
  2. Some t
  3. 因此,Option[T]Optional<T>都会使用T类型,然后再添加1个可能的值(None)。

    为了好玩,我们还可以将此ADT转换为代数方程式:

    Option(t) = 1 + t
    

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