-function pv (x) { return x ; }
+var nil;
+
+function pv (x) { return x==undefined? nil: x; }
function mv(){
var r = [];
return r;
}
+function forcemv (x) {
+ return typeof x == 'object' && 'multiple-value' in x? x: mv(x);
+}
+
// NOTE: Define VALUES to be MV for toplevel forms. It is because
// `eval' compiles the forms and execute the Javascript code at
// toplevel with `js-eval', so it is necessary to return multiple
function checkArgsAtMost(args, n){
if (args.length > n) throw 'too many arguments';
}
+
+function checkArgs(args, n){
+ checkArgsAtLeast(args, n);
+ checkArgsAtMost(args, n);
+}
+
+// Improper list constructor (like LIST*)
+function QIList(){
+ if (arguments.length == 1)
+ return arguments[0];
+ else {
+ var i = arguments.length-1;
+ var r = arguments[i--];
+ for (; i>=0; i--){
+ r = {car: arguments[i], cdr: r};
+ }
+ return r;
+ }
+}