Я изучаю ML в классе, и у меня возникла проблема с домашней работой, на которой я застрял. Я провел весь день вчера в поисках, но добился небольшого прогресса, и мы не говорили об этом в классе, поэтому я надеюсь, что вы, ребята, можете мне помочь.
Нам дано:
datatype which = STRING of string | INT of int
Часть 1. Нам говорят, что нам нужно создать еще один тип данных с именем whichTree
для двоичного дерева, содержащего значения типа which
, где данные находятся только на листьях дерева.
Часть 2. Нам нужно создать функцию whichSearch
, имеющую тип whichTree -> int -> bool
, возвращающую true или false в зависимости от того, находится ли int в дереве.
Это то, что я имею до сих пор:
datatype which = STRING of string | INT of int;
datatype whichTree = Empty | Node of int*whichTree*whichTree;
val t1 = Node(6, Node(4,Empty,Empty), Node(15, Node(11,Empty,Empty), Node(24,Empty,Empty)));
val t2 = Node(157,Empty,Empty);
val t3 = Node(102,t1,t2);
fun whichSearch (i, Empty) = false
| whichSearch (i, Node(entry, left, right)) =
if i = entry then true
else whichSearch (i, left)
orelse whichSearch (i, right);
Проблема, с которой я сейчас сталкиваюсь, такова:
- My
whichTree
не содержит тип which
. Я не уверен, как я могу это исправить.
- У меня должна быть
whichSearch
функция типа whichTree -> int -> bool
, но она int * whichTree -> bool
и я пытаюсь выяснить, как все исправить. Я не уверен, как мне исправить это, поскольку для поиска нужно указать значение i
в whichSearch
. Я ищу по этому вопросу, но любые советы будут хороши.
Кто-нибудь может помочь? Если так, спасибо! И спасибо ребятам, которые уже ответили.