我有一个合并排序函数,它接受一个谓词和一个实际值列表,然后根据谓词对它们进行排序。 e.g。
(merge-sort > '(1 7 4 6))
---> (7 6 4 1)
我的问题是关联列表:
(define *Mark*
'( (age . 20)
(gender . male))
(define *Judith*
'( (age . 30)
(gender . female))
(define *Elliot*
'( (age . 40)
(gender . male))
用于创建无序列表(Mark Elliot Judith),如何使用他们在合并排序中的年龄
(merge-sort > '(20 40 30)) ---> (40 30 20)
我可以输出有序列表
(Elliot Judith Mark)
答案 0 :(得分:2)
(merge-sort (lambda (a b)
(define (get-age x)
(cdr (assq 'age x)))
(> (get-age a) (get-age b)))
(list *Mark* *Judith* *Elliot*))