Denotationally speaking, the virtual DOM is very appealing, but operationally, it is a heavyweight solution for many problems. Every time we modify our application state and rerun our render function, we allocate a new tree of (virtual) DOM components, and perform a tree diff in order to discover what must change in the actual DOM. For many (most?) applications, this seems to be overkill.
Just like the Virtual DOM itself, Phil's approach is no silver bullet. Click through to read the details of his implementation (and get a taste of PureScript if you haven't yet).