I want to write a wrapper function for eternity that will make it behave as if it's being lazily evaluated. In other words, its functionality should be made identical to that of the function lazyeternity below. I have this function packageN that takes a function and packages it into a lambda--or at least I think it does. (Packaging lazyeternity inside a lambda delayed its evaluation in the call of etest.) How can I modify packageN so that eternity = packageN(eternity) can mirror the behavior of lazyeternity?
def eternity():
return eternity()
# How can I create a wrapper function for eternity...
# that will make it behave identical to this function?
def lazyeternity():
return lambda: lazyeternity()
def packageN(f):
return lambda *x: f(*x)
def etest(x, y):
return x
eternity = packageN(eternity)
# I want these both to return 4.
# Currently only the first one returns 4,...
# because the second one evaluates the eternity()...
# parameter forever. I want to delay the evaluation...
# of the parameter.
print etest(4, lazyeternity())
print etest(4, eternity())
packageNto any functionfto make it so thatfis evaluated only when needed.