我如何在Racket中使用e替换位置n处的列表元素的函数。
(repl-elem '(a b c d e) 2 d)
应该返回a d c d e
答案 0 :(得分:0)
为了用一个新元素'A替换列表中索引为2的元素, 一个人可以做到以下几点:
#lang racket
(define xs (list 1 2 3 4 5))
(append (take xs 2)
(list 'A)
(drop xs (+ 2 1)))
我会把它作为练习,把它变成一个功能。
答案 1 :(得分:0)
要查看此列表集背后的机制"一个人可以使用名为let'递归:
(define (f L n c)
(let loop ((x 1)
(ol '()))
(cond
[(> x (length L))
(reverse ol)]
[(= x n)
(loop (add1 x) (cons c ol))]
[else
(loop (add1 x) (cons (list-ref L (sub1 x)) ol))])))
测试:
(f '(a b c d e) 2 'd)
输出:
'(a d c d e)
OP可以弄清楚它是如何工作的。