gpt4 book ai didi

Haskell 类型同义词问题

转载 作者:行者123 更新时间:2023-12-01 09:27:03 24 4
gpt4 key购买 nike

这给了我以下错误

Not in scope: data constructor Blah

为什么?我认为我可以在任何可以使用 Person

的地方使用类型同义词
data Person = Person { weight :: Int, height :: Int }

type Blah = Person

person1 :: Blah
person1 = Blah 80 187

最佳答案

您已将类型 Person 别名为名称 Blah,但 Person 的构造函数仍然是 Person {weight : : 整数,高度::Int}。类型构造函数和类型名称不同,在 Haskell 中甚至保存在不同的命名空间中。

举个例子:

> data MyBool = MyFalse | MyTrue deriving (Show, Eq)
> type Blah = MyBool

这里 MyBool 的构造函数是 MyFalseMyTrue,每个都有种类 *(没有类型参数) .然后我将 MyBool 别名为 Blah:

> MyTrue :: MyBool
MyTrue
> MyTrue :: Blah
MyTrue

这应该有助于强化这样一种想法,即虽然类型的构造函数可能与类型本身共享相同的名称,但它们并不是相同的东西。

关于Haskell 类型同义词问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587156/

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