Home | FAQ
Conceptually, ANIMAL is a simple program, and is quite tiny by today’s standards. But in the context of history, KMP’s ANIMAL Game was quite large compared to the original animal program because was so heavily embellished with features.
The original version of ANIMAL upon which KMP’s version was conceptually based had approximately the following interaction style:
Is your animal a dog? no What animal were you thinking of? cat What yes/no question distinguishes a/an dog from a/an cat. Does it have nine lives? Ok. When I ask that, "yes" implies which answer? cat And "no" implies which answer? dog Ok. Thanks for the game. Another Game? yes Are you thinking of an animal? yes Does it have nine lives? ...etc.
A key feature of KMP’s ANIMAL Game was the "risk taking" that it did. Rather than all those confirmations, it tried to use an interaction style that requested minimal information from the user, so that the interaction would feel more natural, like people really speak. For example, the following (not actual output) is an approximation of the interaction style:
Is your animal a dog? nope What animal were you thinking of? cat What distinguishes a cat from a dog? It has nine lives. Ok. Thanks for the game. Another game? shit yes Please don't use that kind of language with me. Another game? sorry I accept your apology. Another game? yes Does your animal have nine lives? what if i said yes? Then I would guess cat. Does your animal have nine lives? no
Key characteristics of my game that distinguish it from other animal programs of the time were:
The many ways you could say yes/no, including "Is the pope Catholic?" (and a few other such phrases) that were synonyms for "yes".
The guarding for foul language and limited ability to talk off-topic about it being sorry, and the ability to use he/she correctly in mail sent to me complaining about the person.
It had multiple levels of anger. The first time, you’d get a warning and you’d be on a short leash. If you did it again, you’d be thrown out and KMP would get email. If you started up again, it would insist on an apology. If it got one, it would accept it (and send KMP email again) but you were still on a short leash and would be thrown out for any violation.
[I don’t know if multiple apologies got you back into good favor. Maybe... I’d have to check the code. --kmp]
This was further extended for a male user named LAUREN because it sent mail complaining about "her" language, and he insisted it needed to learn that "Lauren" could be a male or female name. So when it met such a person, it would immediately ask which gender they were.
The ability to deal with certain limited hypotheticals (as above)
The ability to generate a/an mostly correctly, even for odd words like x15.
Alas, it never solved “the ‘unionized’ problem”, since in that case the answer is “a” if you think of it as a variation of “union” and “an” if you think of it as a variation of “ionized.”
The ability to transform English declarative sentences like "It has nine lives" to ((:HAS-ATTRIBUTE) NINE LIVES) so that it could be offered back as an interrogative sentence in various forms:
"does your animal have nine lives?"
"is it true that it has nine lives?"
"would you say that it has nine lives?"
The ability to answer various debugging questions like "find dog", which would yield the path to the various dogs in the database.
The ability to change the spelling of misspelled things under user control. For example, a style such as this (not actual output):
Does your animal have three veyr large ears? You misspelled very. Ok. Would you say your animal has three very large ears?
Again, as with the transformational component, it tried to be "gutsy", that is, asking minimal confirmation. It could find the word that was most like what you said was wrong and would simply update the db without saying something totally dorky like other programs might do, such as the following which the program deliberately did not to do:
Please enter the number of the word that is misspelled: 5 So you're saying "three" is a misspelling of "very"? no Please enter the number of the word that is misspelled: 6 So you're saying "veyr" is a misspelling of "very"? yes Ok, so I should ask "your animal has three very large ears?" yes
[I’d have to look at the source code, but there may also have been tree-reshaping dialogs you could do as well. I don’t if anyone but me ever used them, but I recall wanting something more immediate that didn’t require exiting to Emacs, etc. --kmp]