[CM] Possible bug in s7_values
bil at ccrma.Stanford.EDU
bil at ccrma.Stanford.EDU
Thu Apr 21 11:02:20 PDT 2022
The printer includes "values" when it is asked to print a list
of values that was not spliced into a caller's argument list.
It is just trying to be helpful. In the second ("v") case,
it gets the values list unhandled by anything, so it includes
"values" as a sort of warning.
s7_values gives a way to return multiple values from a function
defined in C to a Scheme function (see example below). It is
often equivalent to (apply func (list...)). You can capture
the values in a list if you want.
list-values is a special version of list that splices out
(values) (i.e. values without any arguments). This is expected
in quasiquote, but in s7 other functions (e.g. map) also use it.
static s7_pointer vals(s7_scheme *s, s7_pointer args)
{
return(s7_values(s, args));
}
int main(int argc, char **argv)
{
s7_scheme *s = s7_init();
s7_define_function(s, "vals", vals, 0, 0, true, NULL);
s7_pointer e = s7_eval_c_string(s, "(+ (vals 1 2 3))");
s7_display(s, e, s7_current_output_port(s));
s7_newline(s, s7_current_output_port(s));
}
What are you actually trying to do?
More information about the Cmdist
mailing list