Fondamentalement, je veux une fonction pour faire un tas à partir d'un nœud et 2 sous-tas. La représentation du tas est la suivante (où l'int dans Cons représente le rang du nœud)Restriction de valeur SML - Tas
datatype 'a heap = Empty | Heap of int * 'a * 'a heap * 'a heap
et ma fonction est:
fun makeHeap x h1 h2 = Heap ((rank h1)+1, x, h1, h2)
Les programmes comipiles mais quand je l'appelle makeHeap, je reçois une valeur bizarre au lieu d'un Heap:
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