Self referral in conversation

is there away to use a pronoun like ‘himself’ or ‘herself’ in an NPC conversation?
like, “ask the giant albino zookeeper about himself.”

i can’t simply add ‘himself’ to the (dict *) because the NPCs are all in scope as topics (they have to be able to discuss each other) and the parser will disambiguate who the himself or herself refers to.

2 Likes

Simplest solution is

(grammar [ask [single] about himself/herself] for [ask $Actor about $Actor])

If you want males and females differentiated, then

(understand [ask | $Words] as [ask $Actor about $Actor])
	*(split $Words by [about] into $Person and $Pronoun)
	*(understand $Person as single object $Actor preferably animate)
	{
		($Pronoun = [himself])
		(male $Actor)
	(or)
		($Pronoun = [herself])
		(female $Actor)
	}
3 Likes

Not the most elegant solution, perhaps, but I would make a special #reflexive topic that responds to himself, herself, yourself, etc, then redirect asking/telling about it to asking/telling about the noun.

3 Likes

works perfectly. thx!

1 Like

Heh, I never even considered this. Your solution is simpler than mine conceptually. Of course it will work and it is elegant (plus no need for new grammar).

Gender irelevant:

(topic keyword @himself)
(topic keyword @herself implies @himself)

(perform [ask $Person about himself])
	(try [ask $Person about $Person])

Gender enforced:

(topic keyword @himself)
(topic keyword @herself)

(perform [ask $Person about himself])
	(male $Person)
	(try [ask $Person about $Person])

(perform [ask $Person about herself])
	(female $Person)
	(try [ask $Person about $Person])
2 Likes

Double post alert!

Remind me again, why am I trying to redirect himself/herself to an object? Why not just

(topic keyword @himself)
(topic keyword @herself implies @himself)

(perform [ask $Actor about himself])
	(self descr $Actor)

%% And just add a new predicate to person objects for self description
#alex
(name *)		Alex
(male *)
(proper *)
(descr *)		A nondescript animate human being.
(self descr *)	“I'm Alex, the gardener.”
(animate *)

And gender affirmed:

(topic keyword @himself)
(topic keyword @herself)

(perform [ask (male $Actor) about himself])
	(self descr $Actor)

(perform [ask (female $Actor) about herself])
	(self descr $Actor)

Edit: New predicate, not trait.

The problem there is you also have to handle “ask Alex about Alex”, and per DRY, I like to implement the functionality of an action in only one place. (With your self descr predicate that’s not really an issue, but that’s why my instincts say to do a redirect.)

1 Like

Ah yes, we need another rule for:

(perform [ask (animate $Actor) about $Actor])
	(self descr $Actor)

Then redirecting himself/herself to this is the DRY way, thanks for the reminder.

Please stop making me Google stuff.
(Although, in fairness, I was able to work that one out via context.)
:wink:

1 Like

Don’t Repeat Yourself, the logical opposite of WET (Write Everything Twice)!

3 Likes

I have seen it expanded as Write Every Time as well. Then there is MOIST(Modularize Only If Something Tangible) and DAMP(Don’t Abstract Methods Prematurely). I don’t know why programmer’s are so obsessed with towels.

2 Likes

It’s the one thing you can assume every programmer has! If someone doesn’t have a towel on hand, they have no business messing with code.

2 Likes

Okay, that one I got without Googling. :+1:

2 Likes

I would contend that you don’t need to have it on hand, as long as you know where it is!

2 Likes