[Tutor] Structure of my simulation / monte-carlo

spir denis.spir at free.fr
Mon Nov 2 10:35:29 CET 2009


Le Sun, 01 Nov 2009 20:34:56 -0500,
Dave Angel <davea at ieee.org> s'exprima ainsi:

> And from what you said earlier, you WILL need function objects, probably 
> as parameters to the Simulation constructor.  So each instance of 
> Simulation will be given several function objects to specify the 
> distribution functions for the parameters to be used when creating 
> Applicants and Institutions.

A note on "function objects" (because you --Vincent-- seem to regard this notion as impressive, but maybe I'm wrong).
In python, function objects are functions, no more; all functions (and methods) are objects. Simply, the fact that they are objects, indeed, is revealed in the cases where you bind them to a name like any other object.

to an ordinary variable:

if random_choice == GAUSS:
    randomFunc = gaussRandom

or to a func parameter:

def produceDistribution(self, randomFunc, more_param):
    ...
    random_results = randomFunc(more_param)
    self.distrib = Distribution(results)	# if you have type for distrib

This is not so often needed, but your case in the good one.

The feature is present in most high-level languages. But this has not been true for a long time, especially for mainstream languages of the "imperative" field (while it was more common, even required, for functional languages). So, this feature has kept a kind of special prestige and "functions are first-class objects" often comes early in a list of language features. But there is nothing exceptional in this for a language like python that basically treats data as objects, id est that accesses data through references.

Denis
------
la vita e estrany




More information about the Tutor mailing list