Hi all, When reading Python source code of Peter Norvig's AI book, I found it hard for me to understand the idea of slot (function nested in function). Please see "program()" nested in "make_agent_program()", why not use program() directly?
## http://aima-python.googlecode.com/svn/trunk/agents.py class Agent (Object): """An Agent is a subclass of Object with one required slot, .program, which should hold a function that takes one argument, the percept, and returns an action. (What counts as a percept or action will depend on the specific environment in which the agent exists.) Note that 'program' is a slot, not a method. If it were a method, then the program could 'cheat' and look at aspects of the agent. It's not supposed to do that: the program can only look at the percepts. An agent program that needs a model of the world (and of the agent itself) will have to build and maintain its own model. There is an optional slots, .performance, which is a number giving the performance measure of the agent in its environment.""" def __init__(self): self.program = self.make_agent_program() self.alive = True self.bump = False def make_agent_program (self): def program(percept): return raw_input('Percept=%s; action? ' % percept) return program def can_grab (self, obj): """Returns True if this agent can grab this object. Override for appropriate subclasses of Agent and Object.""" return False Best regards, Davy -- http://mail.python.org/mailman/listinfo/python-list