Draft with absence-thunks + clear
scgmille@xxxxxx 26 Aug 2003 04:11 UTC
A new draft is available at http://sgmiller.org/srfi-44.html. It adds
*-clear[![!]] and changes default values to thunks which are applied on
absence of a value. I prefer this to passing the arguments to the call
again to the thunk, for a few reasons:
- Thunks don't create additional lexical environments, and compilers
may more easily optimize simpler thunks such as (lambda ()
'some-value). They *feel* more efficient.
- One can simulate a recall to the thunk with a small amount of code,
even if those arguments were other applications
for example:
(let ((tc (some-coll-producing-expr))
(key (some-value-producing-expr)))
(dict-get tc key (lambda () ..tc and key both available here)))
rather than
(dict-get (some-coll-producing-expr)
(some-value-producing-expr)
(lambda (tc key) ... code ...))
- It makes the signature of the procedure uniform across all
cases where an absence procedure is used, as opposed to
passing the args again, which can vary in number of arguments
and type between collections and operators.
Scott