问题标签 [lisp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
7330 浏览

macros - LISP 宏能走多远?

我读过很多关于 LISP 可以动态重新定义语法的内容,大概是使用宏。我很好奇这实际上能走多远?你能重新定义语言结构,让它成为另一种语言的编译器吗?例如,您是否可以将 LISP 的功能性质更改为更面向对象的语法和语义,或者说具有更接近于 Ruby 之类的语法?

特别是,是否有可能使用宏摆脱括号地狱?我已经学会了足够的 (Emacs-)LISP 来使用我自己的微功能自定义 Emacs,但我很好奇宏在自定义语言方面能走多远。

0 投票
29 回答
58413 浏览

functional-programming - 我为什么要学习 Lisp?

我真的觉得我应该学习Lisp并且有很多好的资源可以帮助我做到这一点。

我并没有被复杂的语法吓到,但是在“传统商业编程”中,我会在哪里找到使用它而不是程序语言的地方。

有没有用 Lisp 编写的商业杀手级应用程序?

0 投票
12 回答
9374 浏览

c - 如何实现延续?

我正在研究用 C 编写的 Scheme 解释器。目前它使用 C 运行时堆栈作为自己的堆栈,这在实现延续方面存在一个小问题。我目前的解决方案是将 C 堆栈手动复制到堆中,然后在需要时将其复制回来。除了不是标准的 C 之外,这种解决方案也不是很理想。

在 C 中实现 Scheme 延续的最简单方法是什么?

0 投票
12 回答
3948 浏览

lisp - 没有 Emacs 的 Lisp/Scheme 解释器?

一段时间以来,我一直想自学 Lisp。但是,我听说过的所有解释器都包含一些 emacs 风格。是否有任何命令行解释器,以便我可以在命令行中输入:

lispinterpret 源文件.lisp

就像我可以运行 perl 或 python 一样。

虽然我还想更加熟悉 Emacs(如果只是为了在与使用 Emacs 的人一起工作时不会感到沮丧),我宁愿将学习 Emacs 与学习 Lisp 分离。

编辑:我实际上想关注使用Scheme的SICP,所以关于Scheme的答案会更有用。我只是不太熟悉这些差异。

0 投票
4 回答
1747 浏览

regex - 如何将正则表达式绑定到 emacs 中的组合键?

对于上下文,我是一个 emacs 新手。我已经很久没有使用它了,但是已经越来越多地使用它(我非常喜欢它)。我对 lisp 也很满意,但对 elisp 不是很熟悉。

我需要做的是将正则表达式绑定到键盘组合,因为我经常使用这个特定的正则表达式。

我一直在做什么:

请注意,我在上面使用了换行符,但我发现对于isearch-forward-regexp,您确实需要将\n正则表达式中的 替换为C-q Q-j. 这会插入一个文字换行符(不结束命令),使我能够将换行符放入表达式并跨行匹配。

如何将其绑定到组合键?

我隐约明白我需要创建一个isearch-forward-regexp用表达式执行的 elisp 函数,但我对细节很模糊。我搜索了谷歌,发现大多数文档有点令人困惑。

如何将正则表达式绑定到 emacs 中的组合键?


到目前为止,迈克·斯通(Mike Stone)给出了最好的答案——不完全是我想要的,但它满足了我的需要

编辑 - 这种工作,但是在存储宏之后,当我稍后回去使用它时,我无法将它与C-x e. (即,如果我重新启动 emacs,然后键入M-x macro-name, 然后C-x e,我会在 minibuffer 中收到一条消息,例如“没有最后一个 kbd 宏”或类似的东西)


@Mike Stone - 感谢您提供信息。我尝试像这样创建一个宏:

这创建了我的宏,但是当我执行我的宏时,我没有得到与我通常使用isearch-forward-regexp. 相反,它只是跳到表达式的下一个匹配项的末尾。所以这并不能满足我的需要。有任何想法吗?

编辑:看起来我可以使用宏来做我想做的事,我只需要跳出isearch-forward-regexp. 我会尝试你的建议。

0 投票
6 回答
5137 浏览

emacs - 用 Lisp 以外的语言编写 Emacs 扩展

我想使用一个现有的应用程序(用 OCaml 编写)并为它创建一个 Emacs“接口”(例如,Emacs GDB 模式)。我宁愿在不编写大量 Lisp 代码的情况下做到这一点。在 MVC 术语中,我希望视图是 Emacs,但模型和控制器保持(主要)OCaml。

有人知道用 Lisp 以外的语言编写 Emacs 扩展的方法吗?这可以采用以某种其他语言绑定到 Emacs 扩展 API 的形式(例如,使 OCaml 成为一流的 Emacs 扩展语言)或 Emacs 交互模式,例如,扩展具有可以写入的管道Emacs Lisp 表达式并读出结果值。

0 投票
15 回答
6411 浏览

functional-programming - 关于函数式编程的好的开始文本是什么?

我喜欢在我的舒适区之外学习语言,但我很难找到一个开始学习函数式语言的地方。我听说过很多关于计算机程序结构和解释的好东西,但是当我几年前试图通读它时,它似乎在我脑海中呼啸而过。与网站相比,我在书籍方面做得更好,但是当我访问当地的书店时,LISP 上的书籍看起来有点吓人。

那么什么是好的起点呢?我的目标是能够在 6 个月左右的时间内使用函数式编程语言解决简单的问题,并且能够转向更高级的主题,识别函数式语言何时是适合工作的工具,并使用该语言来解决在 2-3 年内解决更多问题。我喜欢有大量例子的书,但也包括需要解决的挑战。函数式语言是否存在这样的事情?

0 投票
6 回答
23672 浏览

build - Lisp 可执行文件

我刚刚开始学习 Lisp,但我不知道如何编译 Lisp 代码并将其链接到可执行文件。

我正在使用clispclisp -c生成两个文件:

  • .fas
  • .lib

接下来我该怎么做才能获得可执行文件?

0 投票
4 回答
516 浏览

lisp - 将 CL 和 Scheme 牢记在心

根据我的心情,我似乎在想要一个 Lisp-1 和一个 Lisp-2 之间来回徘徊。不幸的是,除了明显的名称空间差异之外,这会留下您遇到的各种有趣的函数名称/等问题。举个例子,今晚我试着写一些代码 (map #'function listvar),当然,这在 CL 中根本不起作用。花了我一点时间记住我想要地图车,而不是地图。当然,当 slime/emacs 显示 map IS 被定义为某些东西时,它并没有帮助,尽管显然根本不是相同的功能。

那么,关于如何尽量减少选择其中一个并坚持下去的指针?

0 投票
6 回答
8193 浏览

functional-programming - Lisp 中的列表操作

我一直在到处寻找 Lisp 中的以下功能,但一无所获:

  1. 在列表中找到某物的索引。例子:

    /li>
  2. 替换列表中特定位置的内容。例子:

    /li>
  3. 返回特定索引处的项目。例子:

    /li>

到目前为止,我一直在用我自己的函数来伪装它。我想知道我是否只是在为自己创造更多的工作。

这就是我一直在伪造数字 1 的方式: