(datatype rec X : A; ================= [X] : (record A); X : A; [Y | Z] : (record | As); =========================== [X Y | Z] : (record A | As);) (define name {(record string string number string) --> string} [Name _ _ _] -> Name) (define occupation {(record string string number string) --> string} [_ Occupation _ _] -> Occupation) (define age {(record string string number string) --> number} [_ _ Age _] -> Age) (define nationality {(record string string number string) --> string} [_ _ _ Nationality] -> Nationality)