gpt4 book ai didi

haskell - 为什么 Haskell 中除了类型构造函数还有值构造函数?

转载 作者:行者123 更新时间:2023-12-03 15:27:31 25 4
gpt4 key购买 nike

我是 Haskell 的新手,目前正在使用 Real World Haskell。书中说类型构造函数仅用于类型签名,而值构造函数用于实际代码。它还提供了一个声明示例,以表明两者的名称是相互独立的。如果在实际代码中只使用其中一个,为什么首先需要两个构造函数?既然我们不会在实际代码中使用类型构造函数,那么类型构造函数有什么用途呢?

最佳答案

也许这些名字有点误导。一个 类型构造函数 表示您要声明的类型的名称。之所以这样称呼它们,是因为它们构建类型,而不是值:实际上,(可能)在类型变量上被参数化,它们定义了一系列类型。它们的行为类似于 C++ 的模板和 Java 的泛型。在 data MyType a b = Constr a b , MyType 是一个类型构造函数,它接受两种类型 ab打造新型(MyType a b) .

一个 值构造函数 是您在其他(面向对象的)语言中称为“构造函数”的唯一部分,因为您需要它来构建该类型的值。所以,在前面的例子中,如果你取值构造函数 Constr :: a -> b -> MyType a b , 你可以建立一个值 Constr "abc" 'd' :: MyType [Char] Char .

关于haskell - 为什么 Haskell 中除了类型构造函数还有值构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242709/

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