
    size <- step_zero <- step <- uncons

Somewhere in there it breaks, e.g. (Nim):

    [cats ...]
    joy? size
    Unknown: cats



w/
    ++d == [++] dip

We can define a "safe" version of `size` like so:

    size == 0 swap ? [++d rest ?] loop pop

But I hate the idea of "safe" here.
Either it's user error for calling `size` on a quoted program,
or we should "safe"en the core words?

safe version of uncons == [first] dupdip [rest]
