Как заменить элемент другим в списке в DrScheme, если заданными параметрами являются два элемента и список? - PullRequest
1 голос
/ 21 января 2011

Как заменить элемент другим в списке в DrScheme, если заданными параметрами являются два элемента и список?

Ответы [ 4 ]

5 голосов
/ 21 января 2011

Используйте map с функцией, которая возвращает замещающий элемент, если его аргумент равен элементу, который вы хотите заменить, и аргумент в противном случае.

0 голосов
/ 14 июня 2016

Это заменяет все вхождения fsym в списке lst на символ tsym в DrRacket

(define (subst fsym tsym lst)

(cond

[(null? lst) lst]

[eq? (first lst) fsym)(cons tsym (subst fsym tsym (rest lst)))]

[else (cons (first lst)(subst fsym tsym (rest lst)))]))

(subst 'a 'b '(f g a h a))

;the results will be as follows.

'(f g b h b)
0 голосов
/ 09 ноября 2015
; replace first occurrence of b with a in list ls, q? is used for comparison
(define (replace q? a b ls)
  (cond ((null? ls) '()) 
        ((q? (car ls) b) (replace q? a b (cons a (cdr ls))))
        (else (cons (car ls) (replace a b (cdr ls))))))
0 голосов
/ 22 января 2011
; replace first occurrence of b with a in list ls, q? is used for comparison
(define (replace q? a b ls)
  (cond ((null? ls) '()) 
    ((q? (car ls) b) (cons a (cdr ls)))
    (else (cons (car ls) (replace a b (cdr ls))))))
...