2017-10-24 6 views
-1

kann sagen, ich habe dies: (define-struct Person (Alter Sex-Code)) (define-struct Subjekt (Person mal))Wie kann ich Daten innerhalb einer Struktur vergleichen?

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

    (define subjects P1 P2 ...) 

Ich mag das niedrigste Alter einer Person, um herauszufinden, in die Liste Themen.

Ich kann nicht herausfinden, wie man so etwas implementiert. Kann mir jemand helfen?

Antwort

0

Die Funktion, die Sie suchen, ist 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 
Verwandte Themen