In my library it would be strm tag: 'h1'; do: aBlockWhichWritesTheTitle; end. because one so very often needs to add attributes and/or a namespace. #tag:do: is related to the C++ "Resource Allocation is Initialisation" pattern, where the point is to automatically clean up. In RAII, the clean up is to release a lock or free a resource. In this case, it is to write an end-tag. In a similar way, it is related to the Common Lisp with... pattern, where (with-open-file (variable filespec option...) body...) ensures that the file is closed, to unwind-protect, and of course to the #critical: method on Semaphores, Mutexes, &c.
I don't know if there is an official name other than RAII; I've always thought of it as "automatic cleanup". The difference between this and #ensure: or try-finally or unwind-protect is that in those you have to say what the clean-up action is while in this it is implicit. On Wed, 27 May 2020 at 01:52, Kasper Osterbye <kasper.oster...@gmail.com> wrote: > Hi. > > I was looking at the zink stream, and noticed this pattern with > > strm tag: 'h1' do: aBlockWhichWriteTheTitle > > It is also used in baselines, and I have used it myself a few times. > > Is anyone aware of this having a name? > > Best, > > Kasper >