Asks Alice the question Does the mathematician use the word "Foo" as "No"?
Engine Changes
Modifies the engine to allow asking what the person with a specific profession would answer, because even if we don't know who that is, the people we're asking clearly do. It makes sure to disallow having the main askee be a profession, since you don't know who to ask unless you already know who has that profession.
I ended up implementing it by adding the professions as people, as I didn't like the two other ways I could think of implementing it.
Alternative 1 was making Person::parse_in_context able to find the correct person from Field, but that would require extra logic for finding out who was assigned the field and it would also reveal the name of the person in the interactive version.
Alternative 2 was implementing Either<Person,Field> and making methods use that instead, but that would require touching a lot more methods.
Solution
Asks Alice the question
Does the mathematician use the word "Foo" as "No"?
Engine Changes
Modifies the engine to allow asking what the person with a specific profession would answer, because even if we don't know who that is, the people we're asking clearly do. It makes sure to disallow having the main askee be a profession, since you don't know who to ask unless you already know who has that profession.
I ended up implementing it by adding the professions as people, as I didn't like the two other ways I could think of implementing it. Alternative 1 was making Person::parse_in_context able to find the correct person from Field, but that would require extra logic for finding out who was assigned the field and it would also reveal the name of the person in the interactive version. Alternative 2 was implementing Either<Person,Field> and making methods use that instead, but that would require touching a lot more methods.