そのため、いくつかのコードを試して、letとlambdaの 2 つのスキーム表現方法を変更しようとしています。
私が持っているコードは次のとおりです。
(let splice ((l '()) (m (car s)) (r (cdr s)))
(append
(map (lambda (x) (cons m x)) (perm (append l r)))
(if (null? r) '()
(splice (cons m l) (car r) (cdr r)))))
最も外側のlet定義をラムダ形式に変更しようとしていますが、コードのネストされた性質のために少し混乱しています。私がこれまでにやろうとしたことは次のとおりです。
(lambda (splice (l m r))
(append
(map (lambda (x) (cons m x)) (perm (append l r)))
(if (null? r) '()
(cut (cons m l) (car r) (cdr r)))))
(('()) (car upList) (cdr upList))
これは明らかに間違っていますが、さらに先に進む方法がわかりません...