在Haskell中,如果Maybe是一个类型或联合类型,那么如何称呼'Nothing'?

在Haskell中,如果Maybe是一个类型或联合类型,那么如何称呼'Nothing'?,haskell,union-types,Haskell,Union Types,在Haskell中,可能类型可以是无或只是一个 data Maybe = Nothing | Just a 如果我们调用可能联合类型,那么什么是无?a类型?不,它不是类型,不能将变量声明为Nothingtype 也许你会说类型构造函数是真的,但我想表达一个事实,Nothing和Just是不同的情况 类型值?类型实例?类型案例?它是一个类型案例。由于它没有参数,所以也称为常量和空数据构造函数 这些数据构造器将值(这里没有值)与标记一起分组:某种标识符,用于标识它是无,而不是仅无也称为“变体”(或

在Haskell中,
可能
类型可以是
只是一个

data Maybe = Nothing | Just a
如果我们调用
可能
联合类型,那么什么是
?a
类型
?不,它不是类型,不能将变量声明为
Nothing
type

也许你会说类型构造函数是真的,但我想表达一个事实,
Nothing
Just
是不同的情况

类型值?类型实例?类型案例?

它是一个类型案例。由于它没有参数,所以也称为常量空数据构造函数


这些数据构造器将值(这里没有值)与标记一起分组:某种标识符,用于标识它是
,而不是

也称为“变体”(或“变体类型”)的“案例”)
可能是
。这个术语在OCaml中比在Haskell中使用得更频繁,例如,(我不知道在其他语言中什么是通用的)。

它是一个数据构造函数。值得注意的是,这里的类型构造函数是
可能
(与
只是
)可能
是一个类型构造函数。。。请仔细阅读。请记住,当您看到诸如
data ta=xa | Y Int | Z
之类的声明时,
T
仅出现在类型签名中,而
X
Y
Z
仅出现在代码中(即在术语级别)。语法中包含大量双关语,在我看来相当混乱;e、 g.
yint
在声明中混合了类型和术语级别的内容,以表示“Y接受一个
Int
-type参数”,但在代码中它的用法类似于
y42
Y(someNumber+1)
。很明显,它从未应用于某个类型