Stefan Monnier writes: > I think lazily binding a variable to nil is useless, so I'd drop the > first pcase branch above. Makes sense -- done. > > + :initial-value `(progn ,@body))) > > You can use `macroexp-progn` to avoid constructing a `progn` in the > common case where body is already a single expression. Done (though the byte compiler already dismissed this redundant `progn' in every case, so I didn't care about it). > > +;;;###autoload > > (defmacro thunk-delay (&rest body) > > Maybe a better option is to add a `require` in the expansion of lazy-let? That should be fine, so I've done it as well. This is the updated (cumulative) patch: