There are many similarities between this work and Kennedy2007: join points are continuations; Kennedy separates continuations and ordinary bindings (let vs letcont), and call to continuation and call to function (f k h x vs k x).
Pros of direct style:
direct style is easier to read and reason about
CPS encodes order of evaluation but direct style does not (more important in a call-by-need language)
some transformations are harder in CPS (e.g., common sub-expression elimination)