【发布时间】:2017-12-13 16:10:36
【问题描述】:
这是我出来的代码(显示所有长度为 n 的平衡括号对)
(define (combine-list l r)
(append l (cons r '())))
;(combine-list '(1 2 3) '(4 4))
(define(bps n)
(bps-iter '() (/ n 2) 0 0))
(define (bps-iter lst n open close) (;(display open) (display close) (display "\n")
(cond ((eq? n close) (display lst))
(else ((if (> open close)
(bps-iter (combine-list lst 1) n open (+ 1 close) ))
(if (< open n)
(bps-iter (combine-list lst 0) n (+ open 1) close)))
)
)))
(bps 4)
结果是
application: not a procedure;
expected a procedure that can be applied to arguments
given: #<void>
arguments...: [none]
当它完成调用(eq?n close)并返回'else'寻找另一组括号时有什么问题吗?
【问题讨论】:
-
这几乎总是因为括号太多。你有两个地方太多了。
标签: scheme parentheses r5rs