2017-10-24 11 views
-1

내가 가지고 있다고 할 수 있습니다이 : (정의-구조체 사람 (연령 성별 코드)) (정의 - 구조체 대상 (사람 시간))구조 내부의 데이터를 비교하려면 어떻게해야합니까?

(define P1 (make-subject (make-person 19 'f  'OM29Q) (list 299 194 242 303 243))) 
    (define P2 ...))) 
    (define P3 ...))) 
    ... 

    (define subjects P1 P2 ...) 

내가 사람의 가장 낮은 연령을 찾으려면을 목록 제목.

이런 식으로 구현하는 방법을 알 수 없습니다. 누군가 나를 도울 수 있습니까?

답변

0

원하는 기능은 argmin입니다.

(define-struct person (age sex code) #:transparent) 
(define-struct subject (person times) #:transparent) 

(define P1 (make-subject (make-person 19 'f  'OM29Q) (list 299 194 242 303 243))) 
(define P2 (make-subject (make-person 31 'f  'OM29Q) (list 299 194 242 303 243))) 
(define P3 (make-subject (make-person 14 'f  'OM29Q) (list 299 194 242 303 243))) 
(define P4 (make-subject (make-person 45 'f  'OM29Q) (list 299 194 242 303 243))) 
(define P5 (make-subject (make-person 56 'f  'OM29Q) (list 299 194 242 303 243))) 
(define P6 (make-subject (make-person 20 'f  'OM29Q) (list 299 194 242 303 243))) 

(define subjects (list P1 P2 P3 P4 P5 P6)) 

(define (min-age l) 
    (argmin (lambda (s) (person-age (subject-person s))) l)) 

> (min-age subjects) 
(subject (person 14 'f 'OM29Q) '(299 194 242 303 243)) 
> (person-age (subject-person (min-age subjects))) 
14