Lisp程序产生合同冲突

Lisp程序产生合同冲突,lisp,scheme,binary-search-tree,Lisp,Scheme,Binary Search Tree,我编写了一个lisp程序,它接受两个参数,一个目的地和一个BST形式的映射。它在BST中搜索目的地编号,如果找到目的地,则打印(find:path)。如果找不到,它应该打印(找不到:目的地),但由于某种原因,我违反了合同。它没有正确地通过我的cond,我已经搞乱它三十分钟了。有人能帮忙吗 这是我的节目: (define (robot goal map) [code hidden for university honour code purposes] ; Test robot functi

我编写了一个lisp程序,它接受两个参数,一个目的地和一个BST形式的映射。它在BST中搜索目的地编号,如果找到目的地,则打印(find:path)。如果找不到,它应该打印(找不到:目的地),但由于某种原因,我违反了合同。它没有正确地通过我的cond,我已经搞乱它三十分钟了。有人能帮忙吗

这是我的节目:

(define (robot goal map)
  [code hidden for university honour code purposes]

; Test robot function
(robot 64 '(53 () (64 () ())))
(robot 4 '(53 () (64 () ())))

过程
(定义(机器人地图路径)…)
中缺少一个案例。如果
map
参数为
null
,会发生什么情况?像这样修复它:

(define (robot map path)
  (cond ((not (null? map))
         [code hidden for university honour code purposes])
        (else '()))) ; this line was missing!

这是我在回答你之前的问题时所说的同一件事:总是要考虑的第一个问题,无论你是遍历一个列表还是一棵树,都是:如果它是空的,会发生什么?我一定是不小心把它删掉了。我盯着这个程序看了将近一个小时,试图找出哪里出了问题。谢谢有没有办法显示不带句点的“未找到:4”?我无法使用列表功能。确定:
(cons“未找到:”(cons目标)()