Earlier quoted context omitted.
getchar does take a continuation of sorts (as in continuation passing) which is passed the input. In one my initial drafts, getchar was a special form that would accept input at the point of evaluation, which was really funny and unpredictable. putchar I feel kind of weird about, it acting as an identity function with a side effect is kind of weird; I'm not sure changing it to take a second argument as a continuation…
Entirely agreed that it's nothing but more noise, but isn't that exactly how BF is? Why ----- instead of 5-? Well, because BF of course. The point of the exercise (IMO) is having the bare minimum in parsed characters to achieve the turing tarpit. I quite like the movable register idea but as you say that's no longer a "BF except lambda calculus" it's some other esolang at that point. I think my objection about the la…
Agreed on having too many characters though, I don't like that having numerical indices makes the syntax whitespace-sensitive, too.
And once I figure out how to write hello world, those character literals are gone!