gpt4 book ai didi

haskell - 尝试使用 newtype 将现有数据类型冒充为我自己的数据类型

转载 作者:行者123 更新时间:2023-12-02 10:57:53 25 4
gpt4 key购买 nike

我正在尝试结束 Data.Sequence在我自己的 newtype 中,以隐藏不必要的功能。

MyQueue.hs(省略部分部分):

00 import Data.Sequence

10 newtype MyQueue a = Seq a

23 empty :: MyQueue a
24 empty = Data.Sequence.empty

我收到以下错误。看来我无法返回 Seq输入并将其作为我自己的类型传递。但是如何将我自己的函数映射到 Data.Sequence 中的函数呢?

MyQueue.hs:24:9: error:
• Couldn't match expected type ‘MyQueue a’
with actual type ‘Seq a4’
• In the expression: Data.Sequence.empty
In an equation for ‘empty’: empty = Data.Sequence.empty
• Relevant bindings include
empty :: MyQueue a (bound at MyQueue.hs:24:1)

最佳答案

您实际上并没有创建一个 newtype 来将 Seq a 包装到其中,您构造了一个具有 的类型 MyQueue a数据构造函数采用aSeq。所以它基本上可以存储任何东西。

您可能想要定义一个包含 Seq aMyQueue 数据构造函数,例如:

newtype MyQueue a = <b>MyQueue (</b>Seq a<b>)</b>

然后您可以将您的定义为:

empty :: <i>MyQueue</i> a
empty = <b>MyQueue</b> Data.Sequence.empty

请注意,粗体中的MyQueue是数据构造函数,而后面的MyQueue: :类型构造函数

关于haskell - 尝试使用 newtype 将现有数据类型冒充为我自己的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618993/

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