私はこのコードを持っています:
(define (prog1 x y)
(let ([rel (related x y)])
(cond
[(null? rel) (list x)]
[else (cons x (map (lambda (d) (prog1 (neighbour d) y)) rel))])))
私がやりたいのは、末尾再帰にすることです。私は次のようなことをする必要があることを知っています:
(define (prog1 x y)
(prog1-iter x y `()))
(define (prog1-iter x y acc)
(...
))
しかし、自分のコードからこのコードに移行する方法がわかりません...オリジナルにマップが含まれているためだと思います。これをに組み込む方法がわかりませんprog1-iter
。誰かが私を正しい方向に向けることができますか?