gpt4 book ai didi

api - 在 Haskell 中使用 Data.Heap,或者为初学者阅读 Haskell 文档

转载 作者:行者123 更新时间:2023-12-04 00:53:32 25 4
gpt4 key购买 nike

我正在尝试使用 Haskells Data.Heap 模块,但我什至无法将它与整数一起使用。我能够使用的唯一堆是“空的”,它不接受任何参数。

稍后我会弄清楚如何根据我的需要进行实例化,但现在我会很高兴我什至能够用数字对其进行测试。

最佳答案

通常 Haskell 中的数据结构库提供 fromList从列表转换为该结构的函数。 Data.Heap 也不异常(exception)。但是在尝试使用它时会遇到一些疯狂的错误:

Prelude Data.Heap> Data.Heap.fromList [1,2,5,7]

<interactive>:1:0:
Ambiguous type variables `t', `pol' in the constraint:
`HeapItem pol t'
arising from a use of `fromList' at <interactive>:1:0-27
Probable fix: add a type signature that fixes these type variable(s)

....

这里的重点是 模棱两可的类型 .有几种类型的堆,例如MaxHeap 和 MinHeap,不能通过调用 fromList 来推断.您需要通过类型签名告诉 Haskell 您正在使用哪种堆:
Prelude Data.Heap> Data.Heap.fromList [1,2,5,7] :: MinHeap Int
fromList [(1,()),(2,()),(5,()),(7,())]

其他构造函数,例如 singleton , fromAscList等类似地操作。

一旦你构建了堆,剩下的就很容易了,例如将项目插入堆
Prelude Data.Heap> let heap = Data.Heap.fromList [1,2,5,7] :: MinHeap Int
Prelude Data.Heap> heap
fromList [(1,()),(2,()),(5,()),(7,())]
Prelude Data.Heap> Data.Heap.insert 3 heap
fromList [(1,()),(3,()),(2,()),(5,()),(7,())]

读取堆顶
Prelude Data.Heap> heap
fromList [(1,()),(2,()),(5,()),(7,())]
Prelude Data.Heap> viewHead heap
Just 1

等等

关于api - 在 Haskell 中使用 Data.Heap,或者为初学者阅读 Haskell 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643175/

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