[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Draft with absence-thunks + clear

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)
             (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.


Attachment: pgpz8K3nutNX3.pgp
Description: PGP signature