mirror of
https://gitlab.com/eql/EQL5.git
synced 2026-01-06 09:12:47 -08:00
fix "eql5.js" to allow any number of arguments in "Lisp.fun()"
This commit is contained in:
parent
f290094824
commit
c10db89cc1
3 changed files with 17 additions and 28 deletions
|
|
@ -6,19 +6,13 @@ function checkEval(arg) {
|
|||
return eval(arg.substr(3)); }
|
||||
return arg; }
|
||||
|
||||
function fun(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
|
||||
var args = [];
|
||||
if(undefined != arg1) args.push(arg1); {
|
||||
if(undefined != arg2) args.push(arg2); {
|
||||
if(undefined != arg3) args.push(arg3); {
|
||||
if(undefined != arg4) args.push(arg4); {
|
||||
if(undefined != arg5) args.push(arg5); {
|
||||
if(undefined != arg6) args.push(arg6); {
|
||||
if(undefined != arg7) args.push(arg7); {
|
||||
if(undefined != arg8) args.push(arg8); {
|
||||
if(undefined != arg9) args.push(arg9); }}}}}}}}
|
||||
function fun() {
|
||||
var name = arguments[0];
|
||||
var len = arguments.length - 1;
|
||||
var args = new Array(len);
|
||||
for(var i = 0; i < len; i++) {
|
||||
args[i] = arguments[i + 1]; }
|
||||
return checkEval(EQL5.apply(name, args)); }
|
||||
|
||||
function apply(name, args) {
|
||||
return checkEval(EQL5.apply(name, args)); }
|
||||
|
||||
|
|
|
|||
|
|
@ -6,19 +6,13 @@ function checkEval(arg) {
|
|||
return eval(arg.substr(3)); }
|
||||
return arg; }
|
||||
|
||||
function fun(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
|
||||
var args = [];
|
||||
if(undefined != arg1) args.push(arg1); {
|
||||
if(undefined != arg2) args.push(arg2); {
|
||||
if(undefined != arg3) args.push(arg3); {
|
||||
if(undefined != arg4) args.push(arg4); {
|
||||
if(undefined != arg5) args.push(arg5); {
|
||||
if(undefined != arg6) args.push(arg6); {
|
||||
if(undefined != arg7) args.push(arg7); {
|
||||
if(undefined != arg8) args.push(arg8); {
|
||||
if(undefined != arg9) args.push(arg9); }}}}}}}}
|
||||
function fun() {
|
||||
var name = arguments[0];
|
||||
var len = arguments.length - 1;
|
||||
var args = new Array(len);
|
||||
for(var i = 0; i < len; i++) {
|
||||
args[i] = arguments[i + 1]; }
|
||||
return checkEval(EQL5.apply(name, args)); }
|
||||
|
||||
function apply(name, args) {
|
||||
return checkEval(EQL5.apply(name, args)); }
|
||||
|
||||
|
|
|
|||
|
|
@ -11,10 +11,11 @@ Item {
|
|||
|
||||
// Please note:
|
||||
//
|
||||
// * Lisp.fun() is limited to 9 arguments; use Lisp.apply() for more arguments
|
||||
// * to call lisp functions, use either Lisp.fun() or Lisp.apply();
|
||||
// use JS arrays for lists (can be nested);
|
||||
//
|
||||
// * return values can be nested Lisp lists or vectors, which will be converted to
|
||||
// nested JS arrays: they will be prepared in Lisp and passed to JS eval
|
||||
// nested JS arrays: they will be prepared in Lisp and passed to JS eval;
|
||||
|
||||
// (1) call CL function
|
||||
console.log(Lisp.fun("format", false, "~R", 123))
|
||||
|
|
@ -25,10 +26,10 @@ Item {
|
|||
// (3) pass list argument
|
||||
console.log(Lisp.fun("x:join", ["11", "55"], ":"))
|
||||
|
||||
// (4) nested list arguments; note Lisp.apply() for any number of arguments
|
||||
// (4) nested list arguments
|
||||
// N.B: don't get fooled by the printed representation of the return value:
|
||||
// it's a nested JS array internally
|
||||
console.log(Lisp.apply("list", [[[1, 2, 3], ["a", "b", "c"], 4, 5], 6, [[7, 8], 9]]))
|
||||
console.log(Lisp.fun("list", [[1, 2, 3], ["a", "b", "c"], 4, 5], 6, [[7, 8], 9]))
|
||||
}
|
||||
|
||||
Text {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue