gpt4 book ai didi

haskell - 类型和数据构造函数中的类型参数

转载 作者:行者123 更新时间:2023-12-02 11:07:01 25 4
gpt4 key购买 nike

如果我理解正确的话,

data Int = 1 | 2 | 3 | 4 | ...

右侧的所有内容都只是值。

下面,

data Maybe b = Nothing
| Just b

Maybe b 中的 bJust b 中的 b 意思相同吗?对我来说,也许 b 中的 b 看起来是一个 类型变量,而 中的 b只是 b 是 b 类型的值变量

最佳答案

data Maybe b 表示该类型是泛型,并且 b 是泛型类型变量。

Just b 确实表明创建 Maybe b 值的方法之一是提供 b< 类型的值.

Prelude> Just "foo"
Just "foo"
Prelude> Just 42
Just 42

这里,Just "Foo" 的类型为 Maybe String,因此类型变量 bString >。在 Haskell 中,类型也是变量。

但是,如果您检查 Just 42 的类型,您会发现它仍然是抽象的:

Prelude> :t Just 42
Just 42 :: Num a => Maybe a

这意味着它可以是任何Maybe a,只要aNum类型类的实例即可。所以在这种情况下,类型仍然是“变量”。

(第一个示例,data Int,无法编译...)

关于haskell - 类型和数据构造函数中的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com