> From: Asrarahmed Kadri <[EMAIL PROTECTED]> >> ######################### >>>>> def iszero(n): >> ... def s(x): >> ... return False >> ... return n(s, True) > > > Where is n() defined ...?????
n is a parameter of the function. Thus to call iszero you need to pass in another function which in turn takes a function and a boolean as its arguments. Going back to Danny's original example: >>> def zero(s, z): ... return z ... >>> def one(s, z): ... return s(z) Both of these "numbers" match the type of fuction that iszero expects. So we can do: iszero(zero) Now n takes on the vale of zero and the return line of iszero becomes: return zero(s,True) and zero returns its second argument which is True, so zero is zero, as expected. For iszero(one) the return line is return one(s,True) but inside one the return is now return s(True), but the return value of s is False. So the ultimate reurtn value of iszero(one) is False, again as expected. This is fairly mind bending the first time you come across it so don;t panic,ust work your way through a few more examples as I did above. -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor