Yep, but virtual-dom is more appropriate for declarative reactive frameworks like elm. It need to know what parts of the DOM must be refreshed because the whole elm expression is reevaluated when an event happens. It need to detect the changes. Otherwise, it would have to repaint the whole screen in each event.
Declarative reactive is like a giant event handler that all the events execute. It may have some event/signal preprocessing to mix events/signals depending on timings by means of some special combinators, but at the end it executes the whole declarative expression, which includes the re-generation of all the rendering.
hplayground execute just the part of the monad corresponding to the branch in which the event happened. So it does not need to maintain the old and the new version of the DOM in order to detect the parts to be updated. It updates the affected branch of the DOM directly. So it must be faster (I did not check it however).