Lazy evaluation for Python.
To use yzal:
from yzal import lazy, strict
@lazy
def add(x, y):
sum = x + y
print('Adding {:d} + {:d} = {:d}', x, y, sum)
The following only creates a Thunk, it does not run the lazy function above.
>>> sum = add(3, 7)
There are two ways to get the result of the lazy evaluation. The first is simply to perform an operation that requires a strict value.
>>> 5 + sum
Adding 3 + 7 = 10
15
The second way is to explicitly request a strict value.
>>> sum = add(3, 7)
>>> strict(sum)
Adding 3 + 7 = 10
10
Note
If we did not recreate the Thunk the side effect string would not have displayed again. This is because Thunk's will only evaluate the lazy expression they contain once. Further requests for a strict value will return a cached result. It is important to remember this when the lazy function is not pure.
- Python 3.5 or greater
- lazy_object_proxy
yzal is on PyPI so the best way to install it is:
$ pip install yzal
We wish to thank the following projects, without which yzal would have been much harder to write:
- lazy_object_proxy - A fast and thorough lazy object proxy.