;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; people.scm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define person (make-record-type "person" '(name sex age father mother weight))) (define make-person (record-constructor person)) (define person? (record-predicate person)) (define name.person (record-accessor person 'name)) (define sex.person (record-accessor person 'sex)) (define age.person (record-accessor person 'age)) (define father.person (record-accessor person 'father)) (define mother.person (record-accessor person 'mother)) (define weight.person (record-accessor person 'weight)) (define age.person! (record-modifier person 'age)) (define weight.person! (record-modifier person 'weight)) ;;;;;;;;;; now make persons etc ;;;;;;;;;;;;;;;;; (define dad (make-person "patrick" 'male 45 nil nil 168)) (define mum (make-person "andrea" 'female 41 nil nil 100)) (define zoe (make-person "zoe" 'female 4.9 dad mum 30)) (define (show.person p) ;name sex age father mother weight (list (name.person p) (sex.person p) (age.person p) (cond ((father.person p) (name.person (father.person p))) (#t 'unknown)) (cond ((mother.person p) (name.person (mother.person p))) (#t 'unknown)) (weight.person p))) ;(show.person zoe) ;(age.person! zoe 5) ;(show.person zoe) ;(show.person dad)