我有以下方案功能:
(define get-ivars
(λ (ivars num)
(cond ((null? ivars) '())
(else
(append (list (car ivars) `(nth args ,num)) (list (get-ivars (cdr ivars) (+ num 1))))))))
在特定实例中返回以下内容:
(x (nth args 1) (y (nth args 2) ()))
问题是,我需要它返回:
((x (nth args1)) (y (nth args 2)) ())
- 最后的两个右括号应该在 (nth 语句之后。
我将如何让它正常工作?
get-ivars 调用者:
(define gen-classes
(λ (classes)
(cond ((null? classes) '())
(else
(let* ((class (car classes)))
(eval
`(define ,(cadr class)
(λ (args)
(let (
,(get-ivars (cdr (cadddr class)) 1)
)
(eval
(let* ,(cdar (cddddr class))
(λ (method . args)
,(get-methods (cdadr (cddddr class)))
))))))))))))