I don't know if I should celebrate. Through trial and error, I managed to (I think) properly force list context and dereference on td().
print tr([ td([ ('one datum', 'another', 'yet another datum') ]) ]);
And those print properly, as separated datums. However, the notation confuses me so much I code it as:
print tr([
td([
(
'one datum', 'another', 'yet another datum'
)
])
]);
just to keep it straight when I look at it.
I'm starting to think maybe it's not the best idea.
Anyway, as is obvious if you've somehow managed to slog through this thing, I'm back to working on the cart script.
I'm still not updating the cart in any way, shape, or form; so, to celebrate the fact that I know how to test now, that is my next step. Write a series of tests that will see if the cart is updating properly, and then make them pass.
I really, really have a hard time imagining how to write tests, but I'm told the practice will be worth it.