to support the memoization demo, we can use intermediate_storage (basically the object store) to set the data object to a given address and later we can get the data object from the address
LGTM! Thanks so much for doing this so fast.
I do think that it is a bit strange that address would be an optional param, but then the check doesn't reflect that optionality. However, I guess that isn't a huge issue seeing as we'll be merging this design into set_intermediate_object at some point, anyway.
Will all IOErrors mean that the address is invalid? There could be a failure to maintain a connection to some remote data source.
Nitpick: exprimental -> experimental. Also, it would be good to raise an experimental_fn_warning when this is used.