如果我理解正确,
data Int = 1 | 2 | 3 | 4 | ...
右边的所有东西都只是价值观。
以下,
data Maybe b = Nothing
| Just b
b
中的Maybe b
和b
中的Just b
是否意味着同样的事情?对我而言,b
中的Maybe b
似乎是类型变量,b
中的Just b
是值变量b型。
答案 0 :(得分:0)
data Maybe b
表示该类型是通用的,b
是泛型类型变量。
Just b
确实表明,您可以通过提供Maybe b
类型的值来创建b
值的方法之一。
Prelude> Just "foo"
Just "foo"
Prelude> Just 42
Just 42
此处,Just "Foo"
的类型为Maybe String
,因此类型类型变量b
为String
。在Haskell中,类型也是变量。
但是,如果你检查Just 42
的类型,你会发现它仍然是抽象的:
Prelude> :t Just 42
Just 42 :: Num a => Maybe a
这意味着只要Maybe a
是a
类型类的实例,它就可以是任何Num
。所以在这种情况下,类型仍然是“可变的”。
(第一个例子data Int
,不编译......)