gpt4 book ai didi

haskell - 类型同义词的自动类型构造函数

转载 作者:行者123 更新时间:2023-12-02 14:27:43 25 4
gpt4 key购买 nike

我有一个名为 Vec2F 的类型我可以像这样使用它 Vec2F 0.0 0.0 。但我想制作自己的类型

type Direction = Vec2F

但是我做不到Direction 0.0 0.0我必须定义一个新函数,这有点麻烦。

direction :: Float -> Float -> Vec2F<br/>
direction = Vec2F

我有什么选择?

最佳答案

I have a type called Vec2F and I can use it like this Vec2F 0.0 0.0

不,你不能。

您实际上拥有的是数据定义

data Vec2F = Vec2F Double Double

这是您可以在表达式中使用的第二个 Vec2f。这两次出现的 Vec2F 彼此不可见。它们生活在不同的命名空间中。一个是类型构造函数,另一个是数据构造函数

你可以有这样的定义

data Foo = Bar Double
data Bar = Foo Float

语言会吞噬它(与人类读者相反)。

当您定义类型同义词时,它仅成为该类型(构造函数)的同义词。它对数据构造函数一无所知。

在标准 Haskell 中无法定义数据构造函数同义词。您可能可以使用view patterns [-XViewPatterns] 达到类似的效果。我还没有尝试过。

关于haskell - 类型同义词的自动类型构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20200173/

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