Комментарий Алексиса работает в #lang racket
, за исключением того, что OP хочет убывать:
(define (sort-by-car-number lst)
(sort lst >= #:key car))
(sort-by-car-number '((4 . Blue) (8 . Black) (0 . Yellow) (3 . Green)))
; ==> ((8 . Black) (4 . Blue) (3 . Green) (0 . Yellow))
Что касается более стандартной Схемы без использования #:key
, то будет происходить сравнение каждого элемента как (>= '(4 . Blue) '(8 . Black))
, поэтому, если вы передадите функцию сравнения, которая делает это, у вас есть общее решение Схемы:
(define (sort-by-car-number lst)
(define (object-greater? a b)
(>= (car a) (car b)))
(sort lst object-greater?))