ruricolist / serapeum

Utilities beyond Alexandria
MIT License
422 stars 42 forks source link

Consider adding defer/scope guards #166

Open ruricolist opened 8 months ago

ruricolist commented 8 months ago

Consider adding defer (as in Go) or scope guards (as in D) as a mechanism of resource cleanup.

WIP at https://github.com/ruricolist/serapeum/blob/defer/defer.lisp.

The semantics are fairly straightforward (at least lexically; would there be a use for dynamic scope guards?). Less clear is how useful it would be.

ruricolist commented 5 months ago

If we make "scopes" dynamic and first-class, so we can pass them as parameters, we can implement the full generality of RAII.

This could be very useful for writing FFI code (to avoid "writing C in Lisp").