| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Now that there isn't a stdout channel we can postpone the test showing
the need to flush-stdout before clearing screen.
|
| |
|
|
|
|
| |
Dump yet another trying-to-be-polymorphic function.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also clean up various prints from last few commits.
As a convention, for debugging we always print directly to host.
|
|
|
|
|
|
|
|
| |
I discovered the problem when playing more than 3 moves in the
chessboard app.
But it turns out we've been clobbering each other willy-nilly even in
the chessboard-retro app.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires creating a new data structure called buffer, because
strings are too inefficient for appending to, and we need to know how
long they need to be before we clear them.
But I'm not gonna bother to write tests for all the new primitives I
just introduced, because that's not expedient.
One test for mu is how nicely it handles situations like this without
requiring perfect test hygiene. In this case, I can imagine tools that
will extract tests for a particular function out of all known tests.
Especially if it's a pure function that should be easy. Then just show
each test to the programmer and ask him to give it a reasonable name.
|
|
|
|
|
|
|
| |
Minimize use of 'unless' forms, they're harder to follow.
Also, using one-sided checks like greater-or-equal or lesser-or-equal is
more defensive.
|
| |
|
|
|
|
| |
Feeling more confident now that prints are being managed right.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will let me swap in a fake in tests.
Still hacky, though. I'm sure I'm not managing the parameter right in
the chessboard app.
And then there's the question of whether it should also appear as an
output operand.
But it's a start. And using nil to mean 'real' is a reasonable
convention.
If I ever need to handle multiple screens perhaps we'll have to switch
to 1:literal/terminal and 2:literal/terminal, etc. But those are equally
easy to guard on.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Each clause creates its own default-space for local variables.
Now we can justify prepending bodies on every 'function' form.
Later we can optimize away the duplicate default-spaces.
Another cost: we can't mindlessly use 'next-input' anymore. Pity.
|
| |
|
|
|
|
| |
Is it even worth having my generic function prepend idea?
|
| |
|
|
|
|
| |
Reduce printing primitives before I start messing with fake versions.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Getting the concurrent tests right is still proving difficult. Let's see
if things improve with practice.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Tests force me to extract functions 'read-rank' and 'read-file'.
|
| |
|
|
|
|
|
|
| |
This is the sort of thing we want to make super easy.
But there's a bug at the moment: chessboard prints junk input at second move.
|
| |
|
| |
|
|
|
|
| |
Hacky, but it's a start.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Other options considered for 'retro':
'teletype': perhaps most accurate, but arcane
'chat': captures that you have to hit 'enter', but not the rendering
'wrap': captures the auto-wrap when printing text but not that you have
to hit 'enter' when typing
'text': useful as a synonym of 'chat' while conveying more information
in other meanings, but too generic, nobody will get it
Why do the input and output options have to be entangled like this?
|
| |
|
|
|
|
| |
Tests for terminating when there's just helpers left.
|
| |
|
| |
|
|
|
|
| |
Simpler to just always sleep, whether or not a character was received.
|
| |
|