私は次のスキーム関数を持っています:
(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)) ())
-最後の2つの閉じ括弧は、(n番目のステートメントの後にある必要があります。
これを正しく機能させるにはどうすればよいですか?
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)))
))))))))))))