2010-11-05 5 views
2

J'ai toujours des problèmes avec cela, donc je peux demander de l'aide.Standard ML Binary Tree

Nous sommes donnés:

datatype which = STRING of string | INT of int 

Partie 1. Nous avons dit que nous devons créer un autre type de données nommé whichTree pour un arbre binaire contenant les valeurs de type « qui » où les données sont seulement aux feuilles de arbre.

Je suppose que ce serait la bonne réponse:

datatype whichTree = Empty | Leaf of which | Node of whichTree*whichTree; 

Il se trouve qu'il est pas quand je lance:

val inttree = Node(Leaf(1), Leaf(2)); 

Je reçois une erreur.

j'ai pu comprendre que je peux faire quelque chose comme ceci:

datatype 'a whichTree = Empty | Leaf of 'a | Node of 'a whichTree * 'a whichTree; 

ou

datatype whichTree = Empty | Leaf of int | Node of whichTree*whichTree; 

Mais aucun d'entre eux semblent bon pour moi que dans mon premier cas mon nom de type de données a a 'a dedans et dans mon autre je dis Leaf of int quand je devrais pouvoir spécifier string ou int en utilisant which.

Quelqu'un peut-il me dire ce que le bon répondez-vous ou me fournir de l'aide?

Répondre

4

Votre définition whichTree est correcte, vous manquez juste le constructeur pour which dans votre inttree:

val inttree = Node(Leaf(INT 1), Leaf(INT 2)) 
+0

Merci! C'était ce que je cherchais. – user494948

Questions connexes