2017-07-29 17 views
1

JSCL是Common Lisp(CL)的实现之一。如何从JSCL方法调用Common Lisp代码

它涵盖许多的CL特征除了CLOS,格式等

它有其REPL其他CL实现。

我想知道如何从JS端调用CL代码。

我想这样做:

// set the CL codes as string 
var codes = "(defun f1(x) (+ x 1)) 
(f1 99)"; 

// call CL codes from JSCL 
JSCL.CL.call(codes); 
=> 100 

我想找到JSCL这样的方法。

回答

2

您可以从JS控制台调用Common Lisp函数和特殊窗体。 您只需在浏览器的控制台上输入以下代码即可。

在下面的例子中,第一代码定义了返回值加到1和第二代码调用函数,并打印评价值的函数100

jscl.CL.PRINT.fvalue.call(this, jscl.internals.pv, jscl.CL.EVAL.fvalue.call(this, jscl.internals.pv, jscl.packages["COMMON-LISP"].symbols["READ-FROM-STRING"].fvalue.call(this, jscl.internals.pv, jscl.internals.js_to_lisp("(defun f1(x)(+ x 1))")))) 

jscl.CL.PRINT.fvalue.call(this, jscl.internals.pv, jscl.CL.EVAL.fvalue.call(this, jscl.internals.pv, jscl.packages["COMMON-LISP"].symbols["READ-FROM-STRING"].fvalue.call(this, jscl.internals.pv, jscl.internals.js_to_lisp("(f1 99)"))))