@vnikolov A good use case for PROG1 is popping an item off a list L:
(PROG1 (CAR L) (SETF L (CDR L)))
(PROG1 (CAR L) (SETF L (CDR L)))
Right, and then that leads us towards Common Lisp's `define-modify-macro'.
Myself, I have found it handy also in Elisp:
(prog1
<set up a buffer, make it the current buffer, and return it>
<do things in the current buffer>)
A space for Bonfire maintainers and contributors to communicate