在功能细胞和价值细胞分离的技术问题中,Kent Pitman和Richard Gabriel解释了使Common Lisp成为Lisp-2的决定:
有两种方法可以查看有关宏和名称空间的参数.首先,单个命名空间至关重要,因此宏存在问题.第二个是宏是基本的,因此单个命名空间是有问题的.
据此,在编程宏时,宏编程中的单个命名空间本身就存在问题.
但是Clojure的方法有点不同:反引用可以解析名称空间.
在On Lisp一书的第9章中,Paul Graham通过分离包中的代码来讨论避免变量捕获:
但是,包不能为捕获问题提供非常通用的解决方案.首先,宏是某些程序的组成部分,在它们自己的包中分离它们是不方便的.其次,这种方法不能防止宏包中的其他代码捕获.
据我所知,Clojure的变量捕获解决方案看起来像Paul Graham所展示的打包选项.
Paul Graham指出的一个主要缺点是将不同包中的宏分开是不方便的,但是Clojure的反引用通过预先添加符号的名称空间来自动完成它,对吗?
那么,它是变量捕获的完整解决方案吗?或肯特皮特曼的话仍然适用?如果Common Lisp的separeted命名空间可以处理Clojure无法处理的任何问题,你能写下一个例子吗?
我想在Leinigen中添加一个本地的实用程序库,而不必编写库的jar,或者不复制代码.
那可能吗?
由于AWS Lambda支持运行二进制文件,因此我想pdflatex在AWS Lambda中运行,但是偶然发现了一些问题。我已经成功运行了其他二进制文件,但是pdflatex有许多共享的OS库依赖项,我不知道如何使它工作。
示例代码如下所示:
'use strict';
let exec = require('child_process').exec;
exports.handler = (event, context, callback) => {
const child = exec('LD_LIBRARY_PATH=bin/ ./pdflatex my-file.tex', (error) => {
callback(error, 'Process complete!');
});
child.stdout.on('data', console.log);
child.stderr.on('data', console.error);
};
Run Code Online (Sandbox Code Playgroud)
ZIP文件如下所示:
index.js -------------- where the above code is
pdflatex -------------- binary from my OS
my-file.tex ----------- a sample LaTeX document
bin/ ------------------ folder with shared OS libraries
Run Code Online (Sandbox Code Playgroud)
上载的ZIP文件包含上述所有内容。
我生成了pdflatexwith cp $(which pdflatex) pdflatex。
pdflatex吗?这种方法有什么问题吗?有没有更好的办法? …latex pdflatex amazon-web-services latex-environment aws-lambda
clojure ×2
aws-lambda ×1
common-lisp ×1
elisp ×1
emacs ×1
key-bindings ×1
latex ×1
leiningen ×1
macros ×1
pdflatex ×1