В конечном счете, я буду пытаться переопределить алгоритмы сортировки в схеме для связанных списков.Я написал подпроцедуру, которая поможет мне в этом.Цель состоит в том, чтобы просто поменять 2 элемента, заданных в качестве аргументов «пара1 и пара2», а затем вернуть список.
(define (cons-til lst until)
(cond
((or (null? lst) (eq? (car lst) until)) '())
(else (cons (car lst) (cons-til (cdr lst) until)))))
(define (swap lst pair1 pair2)
(cons (cons (append (cons-til lst (car pair1))
(car pair2)) (car pair1)) (cdr pair2)))
(define my-list '(1 2 3 4 5 6 7))
(swap my-list (cdr (cdr my-list)) (cdr (cdr (cdr my-list))))
Когда код выполняется, он возвращает:
(((1 2 . 4) . 3) 5 6 7)
Как я могу это исправить, чтобы иметь простой список схем.Элемент, похоже, поменялся местами.