Mas*_*sse 12 api haskell data-structures
我正在尝试使用Haskells Data.Heap模块,但我甚至无法使用整数.我能够使用的唯一堆是"空",它不带任何参数.
稍后我会弄清楚如何满足我的需求,但是现在如果我能用数字测试它,我会很高兴.
ken*_*ytm 16
通常,Haskell中的数据结构库提供fromList了从列表转换到该结构的函数.Data.Heap也不例外.但是在尝试使用它时会遇到一些疯狂的错误:
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)
....
Run Code Online (Sandbox Code Playgroud)
这里的主要观点是不明确的类型.有几种类型的堆,例如MaxHeap和MinHeap,不能仅通过调用来推断fromList.你需要通过类型签名告诉Haskell你正在使用哪种堆:
Prelude Data.Heap> Data.Heap.fromList [1,2,5,7] :: MinHeap Int
fromList [(1,()),(2,()),(5,()),(7,())]
Run Code Online (Sandbox Code Playgroud)
其他构造如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,())]
Run Code Online (Sandbox Code Playgroud)
阅读堆顶部
Prelude Data.Heap> heap
fromList [(1,()),(2,()),(5,()),(7,())]
Prelude Data.Heap> viewHead heap
Just 1
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |