【发布时间】:2020-09-26 20:10:27
【问题描述】:
我试图定义一个与列表集基本上做同样事情的替换过程。 到目前为止,这是我的代码:
(define replace
(lambda (s pos lst fin-lst)
(cond
((zero? pos) (cons (cons (reverse fin-lst) s) (rest lst)))
(else (replace s (- pos 1) (rest lst) (cons (first lst) fin-lst))))))
它有点像它应该做的,但我正在努力让输出看起来像我想要的那样。例如这是我想要的结果
(replace 'a 2 '(1 2 3 4 5) '()) => '(1 2 a 4 5)
但到目前为止,这是我的程序返回的内容
'(((1 2) . a) 4 5)
我知道这是由于 cons 与 append,但我怎样才能更改我的代码以摆脱额外的括号和 . ?
【问题讨论】: