0
基本上,我想要一個函數從一個節點和2個子堆中創建一個堆。堆表示如下(其中利弊的INT表示節點的等級)SML值限制 - 堆
datatype 'a heap = Empty | Heap of int * 'a * 'a heap * 'a heap
,我的作用是:
fun makeHeap x h1 h2 = Heap ((rank h1)+1, x, h1, h2)
的程序comipiles但是當我打電話makeHeap,我得到一個奇怪的值,而不是堆:
makeHeap(#"c", Empty, Empty);
stdIn:72.1-72.29 Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
val it = fn
: (char * ?.X1 heap * ?.X2 heap) heap
-> (char * ?.X1 heap * ?.X2 heap) heap
-> (char * ?.X1 heap * ?.X2 heap) heap