gpt4 book ai didi

haskell - 为什么下面的类型构造函数比数据构造函数接受更少的参数?

转载 作者:行者123 更新时间:2023-12-04 05:59:09 26 4
gpt4 key购买 nike

我有以下类型声明:

data Quadruple a b = Quad a a b b

(有些人可能从 Yet Another Haskell Tutorial 中认出了这个声明)。

我理解代码的意图是:创建一个名为 Quadruple 的数据类型。它有一个名为 Quad 的单一类型构造函数,它有四个值。前两个值必须具有相同的类型,最后两个值必须具有相同的类型。

我无法向自己解释为什么类型构造函数比数据构造函数接受更少的参数。我能想到的唯一解释是,Haskell 能够从类型声明中推断出,如果第一个值是类型 a,那么第二个值也是类型,如果第三个值是类型 b,那么第四个值也是类型。

这是正确的吗?我在这里错过了什么吗?我知道 Haskell 有类型推断,所以这是有道理的,但我不想运行错误的心智模型。 (第二次尝试学习Haskell)。

最佳答案

使用类型可能会更清楚

q = Quad 1 2 "peter" "paul"

在这里你可以看到有 2 种类型在起作用,IntString。所以 qQuadruple Int String 类型。

所以有 2 种类型在起作用:Quadruple 的类型参数的数量。值构造函数需要 4 个值(/字段):Quad 值构造函数的参数数量。

关于haskell - 为什么下面的类型构造函数比数据构造函数接受更少的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42473592/

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