Стандартный тип данных двоичного дерева ML - PullRequest
0 голосов
/ 03 ноября 2011

Я знаю, что этот вопрос задавался ранее, но ни один из ответов на предыдущие вопросы не помог мне, поэтому я попробую другой подход.

Я сделал это:

> datatype which = STRING of string | INT of int;
datatype which = INT of int | STRING of string
> datatype whichTree = Empty | Leaf of which | Node of whichTree*whichTree;
datatype whichTree = Empty | Leaf of which | Node of whichTree * whichTree

но когда я пытаюсь построить дерево

> val mytree = Node(Leaf(which 2), Leaf(which 6));

Я получаю ошибки.

Error-Value or constructor (which) has not been declared   Found near
Node( Leaf(which(2)), Leaf(which(6)))
Error-Value or constructor (which) has not been declared   Found near
Node( Leaf(which(2)), Leaf(which(6)))
Static errors (pass2)

1 Ответ

1 голос
/ 03 ноября 2011

which - имя типа данных;это не конструктор.Вместо этого вы должны создать дерево следующим образом:

> val mytree = Node(Leaf(INT 2), Leaf(STRING "6"));
...