【发布时间】:2021-02-23 00:54:54
【问题描述】:
我在方案中创建的二叉搜索树出现错误。
$gosh main.sc
*** ERROR: list required, but got 5
Stack Trace:
_______________________________________
这是我的代码。我认为错误与我调用函数的方式有关,但我不确定到底是什么问题。我使用两个必需参数调用插入函数:树和值 5。
(define (member? t v)
(cond
((null? t)
#f
)
((< node (car t))
(member? (cadr t) v))
((> node (car t))
(member? (caddr t) v))
(else
#t
)
)
)
(define (insert t v)
(cond
((null? t)
(list v '() '())
)
((< v (car t))
(list (car t) (insert (cadr t) v) (caddr t))
)
((>= v (car t))
(list (car t) (cadr t) (insert (caddr t) v))
)
(else
t
)
)
)
(define (fold func val lst)
(if (null? lst) val (fold func (func val (car lst)) (cdr lst))))
(define (build lst)
(fold (lambda (t v) (insert t v)) '() lst))
(define t (list 10 '() '()))
(insert t 5)
display (member t 5)
display t
【问题讨论】:
-
无法在更成熟的实现中重现 您的解释器可能会在结尾处因语法错误而窒息。 (Gauche 甚至还不是 1.0 版,所以 bug 不足为奇。)
标签: functional-programming scheme