Я пытаюсь написать функцию, которая объединяет, а затем сортирует список, но теперь у меня есть две разные функции; тот, который объединяет это и тот, который сортирует это. Поэтому я пытаюсь написать другую функцию, которая вызывает обе функции, чтобы она могла объединить и отсортировать список сразу в этой функции.
Вот что у меня есть:
;; this merges the list
(define (merge l1 l2)
(cond ((null? l1) l2)
((null? l2) l1)
((< (car l1) (car l2)) (cons (car l1) (merge (cdr l1) l2)))
(else (cons (car l2) (merge l1 (cdr l2))))))
;; this sorts the list
(define sort
(lambda (lst)
(if (null? lst)
'()
(insert (car lst)
(sort (cdr lst))))))
(define insert
(lambda (elt sorted-lst)
(if (null? sorted-lst)
(list elt)
(if (<= elt (car sorted-lst))
(cons elt sorted-lst)
(cons (car sorted-lst)
(insert elt (cdr sorted-lst)))))))