Initial comments on SRFI 269
Wolfgang Corcoran-Mathe 14 Jun 2026 01:43 UTC
Hello Andrew & Ramin,
Thanks for your work on this SRFI. I like the idea of separating test
description and execution very much. It may be a battle to get
Schemers to use anything other than SRFI 64 (and the like), but I hope
SRFI 269 will succeed.
A few questions & comments:
1. Why is the parameter called 'test-runner*' and not 'test-runner'?
2. There is currently no assertion support for multiple values. The
"general" form of 'is' is thus not general enough, and the "predicate"
form conflicts badly with multiple-value syntax ('let-values',
'call-with-values', etc.). I'll have to study the protocol in greater
depth to come up with a suggestion of how to solve this, but it really
must be solved: multiple values are common in Scheme. In several
places the SRFI also refers to "the value" returned by a user-provided
expression (which may return zero or more values). In those places,
read "values".
3. Setting the multiple-value issue aside for the moment, I'd add that
'is' should not analyze the test expression. One of my favorite of
Herman & Van Horn's macro-design principles[1] is "treat subterms as
atomic". At the moment, the "general" and "predicate" forms of 'is'
overlap, with potentially surprising results. (You can't tell, in
general, whether the first identifier of a Scheme expression denotes a
procedure or something else.) If you want to capture the operator of a
procedure application, make it an additional macro argument.
In short, the form of assertions needs work.
That's what I have at the moment. I'll keep studying the SRFI.
Thanks again,
Wolfgang
[1] https://www.cs.brandeis.edu/~dvanhorn/pubs/herman-vanhorn-scheme08.pdf
--
Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz>