Я пытаюсь добавить новый узел в дерево. Ниже приведены мои определения и тип функций:Вставить узел в дерево - Racket
(define-struct (Some T)
([value : T]))
(define-type (Option T)
(U 'None (Some T)))
(define-type BST (U 'E Nd))
(define-struct Nd
([root : Integer]
[lsub : BST]
[rsub : BST]))
(: insert : Integer BST -> BST)
;; insert an item into a tree
;; note: do not insert duplicate items
(define (insert n x)
(match x
('E 'E)
((Nd ro ls rs)
(cond
((= (size x) 1) (Nd ro (Nd n 'E 'E) 'E))
(else
(Nd ro ls rs))))))
Вставка - это вставка, которая вставляет узел в дерево.
Ниже команда, которую Я дам:
(insert 10 (Nd 1 (Nd 2 (Nd 4 'E 'E) (Nd 5 'E 'E)) (Nd 3 (Nd 6 'E 'E) (Nd 7 'E 'E))))
И он должен вставить десять в дерево. Тем не менее, я учусь самостоятельно дома, и у меня нет идеи, что делать. Пожалуйста помоги. Спасибо огромное!
В случае, если вы пропустили их, есть две хорошие книги, доступные бесплатно онлайн: [SICP] (https://mitpress.mit.edu/sicp/) и [HtDP] (http://www.htdp.org/). Они не о Typed Racket, но принципы одинаковы. – molbdnilo