12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- gender:= Male | Female | Unspec;
- byGender := { [m,f,n] => { [Male] => m; [Female] => f; [_] => n }};
- ending := byGender["o","a","e"];
- pronoun := byGender["He","She","They"];
- noun := byGender["man","woman","person"];
- are := byGender["is","is","are"];
- have := byGender["has", "has", "have"];
- cons ::= p t c d g r l m n x;
- vowel ::= a e i o u;
- name := { [g] => (vowel | "") rep[1..3, cons vowel] cons ending[g] };
- hairColor ::= black brown blonde;
- eyeColor ::= brown green blue;
- job := { [g] =>
- "stonemason"
- | "baker"
- | "accountant"
- | case g in
- { Male => "fisherman"
- ; Female => "fisherwoman"
- } };
- tool := { ["stonemason"] => "chisel"
- ; ["baker"] => "bowl"
- ; ["accountant"] => "tablet"
- ; [_] => "fishing pole"
- };
- adjective ::= happy cheerful focused quiet meek rash;
- person :=
- let fix my-gender := gender in {
- let fix my-job := job[my-gender] in {
- "You come across " str/capitalize[name[my-gender]] ", a " noun[my-gender]
- " from the city of " str/capitalize[name[Female]] ". "
- pronoun[my-gender] " " are[my-gender] " a hardworking " my-job " with "
- hairColor " hair and " eyeColor " eyes. "
- str/capitalize[pronoun[my-gender]] " "
- have[my-gender] " a " tool[my-job] " and " are[my-gender] " very " adjective "." } };
- puts person;
|