小编EuA*_*reh的帖子

在编写宏时,Clojure的单命名空间方法是否会以任何方式限制您?

功能细胞和价值细胞分离的技术问题中,Kent Pitman和Richard Gabriel解释了使Common Lisp成为Lisp-2的决定:

有两种方法可以查看有关宏和名称空间的参数.首先,单个命名空间至关重要,因此宏存在问题.第二个是宏是基本的,因此单个命名空间是有问题的.

据此,在编程宏时,宏编程中的单个命名空间本身就存在问题.

但是Clojure的方法有点不同:反引用可以解析名称空间.

在On Lisp一书的第9章中,Paul Graham通过分离包中的代码来讨论避免变量捕获:

但是,包不能为捕获问题提供非常通用的解决方案.首先,宏是某些程序的组成部分,在它们自己的包中分离它们是不方便的.其次,这种方法不能防止宏包中的其他代码捕获.

据我所知,Clojure的变量捕获解决方案看起来像Paul Graham所展示的打包选项.

Paul Graham指出的一个主要缺点是将不同包中的宏分开是不方便的,但是Clojure的反引用通过预先添加符号的名称空间来自动完成它,对吗?

那么,它是变量捕获的完整解决方案吗?或肯特皮特曼的话仍然适用?如果Common Lisp的separeted命名空间可以处理Clojure无法处理的任何问题,你能写下一个例子吗?

macros clojure common-lisp

7
推荐指数
1
解决办法
177
查看次数

如何在Emacs中创建区分大小写的键绑定?

根据Emacs的手册,由于"历史原因",修饰键不区分大小写.

我可以改变这种行为吗?

我的目标是制造M-aM-A表达不同的东西.

谢谢!

emacs elisp case-sensitive key-bindings

7
推荐指数
1
解决办法
287
查看次数

如何在Leinigen项目中添加本地库?

我想在Leinigen中添加一个本地的实用程序库,而不必编写库的jar,或者不复制代码.

那可能吗?

clojure leiningen

4
推荐指数
1
解决办法
106
查看次数

如何在AWS Lambda上像`pdflatex`这样的二进制文件运行?

由于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

  1. 这是上传的正确方法pdflatex吗?这种方法有什么问题吗?有没有更好的办法? …

latex pdflatex amazon-web-services latex-environment aws-lambda

3
推荐指数
1
解决办法
1874
查看次数