On Fri, 23 Mar 2012, Tanner Swett wrote: > On Fri, Mar 23, 2012 at 1:13 PM, Kerim Aydin <ke...@u.washington.edu> wrote: > > Trying to define an obvious concept here, does recursion work, can > > this be written better? > > > > A golem can either have a Boss, be Emancipated, or be in Storage. > > > > If a golem has no owner, or (through circularity of ownership) > > owns itself, it is Emancipated. Otherwise: > > 1. If a golem's owner is a first-class person, that person > > is the golem's Boss; otherwise, > > 2. If the golem's owner is an Emancipated golem or a non-golem, > > then the golem is in Storage; otherwise, > > 3. the golem's owner's Boss is the golem's Boss. > > If I may make a suggestion: > > {A golem's first guardian (if any) is its owner. A golem's nth > guardian (if any), for n greater than 1, is the owner of its (n-1)st > guardian. > > If a golem has no owner, or has itself as a guardian, it is > Emancipated. If a golem is not Emancipated, but has an Emancipated > golem as a guardian, it is in Storage. If a golem has a first-class > player as a guardian, that player is the golem's Boss.}
I like the phrasing. One difference: Golem ownership isn't restricted. A golem can be transferred to a ruble, for example. If the ownership chain is: F.C. person -> Ruble -> Golem then my version stops at "Ruble" ("non-golem") and calls the golem in Storage. Your version sees all the way through to "Boss". But also if the chain is Lost&Found -> Ruble -> Golem then yours makes it undefined. I suppose desired behavior depends on what I'm using this for. I think "In storage" is a little more appropriate because once the golem is owned by the Ruble, the F.C. person can't get at it (because there's no way to act-on-behalf of a ruble). -G.