"application: not a procedure" 一切正常,除了我尝试打印 #t

"application: not a procedure" Everything works except my attempt to print a #t

我正在尝试打印基本的#t。 #f 确实打印了,但是当我尝试打印 #t 时,我就收到了一个错误。当您得到一个空列表时会发生这种情况,通常是在 leave/child 节点上。

程序检查输入是否为二叉树。

Arbol 的意思是树。

(define (arbol-binario? a)
  (if (list? a) 
      (if (null? a)
          #t
          (if (= (length a) 3)
              ((arbol-binario? (second a))
               (arbol-binario? (cdr (cdr a))))
              #f))
      #f))

问题是:

((arbol-binario? (second a))
 (arbol-binario? (cdr (cdr a))))

如果 (arbol-binario? (second a)) 的计算结果为 #t 那么 应用程序是:(#t (arbol-binario? (cdr (cdr a))),你会得到一个错误。

更新

尝试

(and (arbol-binario? (second a))
     (arbol-binario? (cdr (cdr a))))