,因为昨天我一直在试图编程实现方案的特例声明,将做到以下几点:定义的语法使用的方案
(define (sort x)
(cond ((and (list? x) x) => (lambda (l)
(sort-list l)))
((and (pair? x) x) => (lambda (p)
(if (> (car p) (cdr p))
(cons (cdr p) (car p))
p)))
(else "here")))
,而不是使用所有的和的和电导率的说法,我将有:
(define (sort x)
(scase ((list? x) => (lambda (l)
(sort-list l)))
((pair? x) => (lambda (p)
(if (> (car p) (cdr p))
(cons (cdr p) (car p))
p)))
(else "here")))
我到目前为止做的,是这样的:
(define (sort x)
(scase (list? x) (lambda (l)
(sort-list l)))
(scase (pair? x) (lambda (p)
(if (> (car p) (cdr p))
(cons (cdr p) (car p))
p))))
与此代码:
(define-syntax scase
(syntax-rules()
((if condition body ...)
(if condition
(begin
body ...)))))
我想现在要做的,只是让scase语句有多个参数是这样的:
(scase ((list? (cons 2 1)) 'here)
((list? '(2 1)) 'working))
,但我似乎无法弄清楚我如何能做到这一点。也许你们可以给我一点帮助?
在此先感谢;)
如果这回答了你的问题,你应该[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –