问题标签 [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.
syntax - Lisp DO 变量语法推理
在 Peter Seibel 的Practical Common Lisp中,他给出了这个例子:
我可以看到它是如何工作的,在循环中使用 nums 但不给它一个步骤形式。为什么要将 nums 放在变量定义中而不是这样做:
我确信有一个很好的理由,但我还不明白。
lisp - 如何在 Lisp 中记忆递归函数?
我是一个 Lisp 初学者。我试图记住一个递归函数来计算Collatz 序列中的项数(对于Project Euler中的问题 14 )。到目前为止,我的代码是:
memoize 函数与On Lisp书中给出的函数相同。
与非记忆版本相比,此代码实际上并没有提供任何加速。我相信这是由于递归调用调用了函数的非记忆版本,这有点违背了目的。在那种情况下,在这里进行记忆的正确方法是什么?有没有办法让对原始函数的所有调用都调用记忆化版本本身,从而消除对特殊 m-collatz-steps 符号的需要?
编辑:更正了代码
这就是我的代码中的内容。在编辑之前,我错误地输入了:
看到这个错误给了我另一个想法,我尝试使用最后一个 defvar 本身并将递归调用更改为
这似乎确实执行了记忆(从大约 60 秒加速到 1.5 秒),但需要更改原始功能。是否有不涉及更改原始功能的更清洁的解决方案?
lisp - 通过 SICP 工作的最佳方案实施是什么?
我一直在使用PLT Scheme,但它有一些问题。有谁知道通过 SICP 工作的更好实施?
lisp - 使用 Lisp(或 AutoLisp)的关联列表性能有多好?
我正在做一个 AutoLisp 项目,它使用长关联结构来进行繁重的几何处理——所以我对关联列表的密集使用时间结果很好奇。实现有多简单/复杂?它使用一些数据结构还是普通的点对列表?b-tree 有什么扩展名吗?
macros - 是什么让 Lisp 宏如此特别?
阅读Paul Graham关于编程语言的文章会认为Lisp 宏是唯一的出路。作为一个忙碌的开发人员,在其他平台上工作,我没有使用 Lisp 宏的特权。作为一个想了解嗡嗡声的人,请解释一下是什么让这个功能如此强大。
还请将此与我从 Python、Java、C# 或 C 开发领域理解的内容联系起来。
web-applications - 为用 Lisp 编写的 Web 应用程序提供服务的首选方式是什么?
我一直在研究 Nginx(我首选的网络服务器)的模块以服务于 Lisp 网络应用程序,但我找不到任何东西。
是否有 Nginx 的模块,或者有更好的方法来服务 Lisp webapps?如果是这样,它们是什么?
lisp - 为 Common Lisp 项目自动创建 ASDF 文件
有没有图书馆可以做到这一点?玩转 Common Lisp 似乎这将是降低新手入门门槛的最有用的东西之一。ASDF 似乎主要是为部署而设计的,而不是为快速原型设计和开发而设计的。关注 comp.lang.lisp 上的线程,似乎人们同意 CL 的包系统功能强大,但缺乏 Python 死的简单模块系统之类的易用性。从某种意义上说,它是为功率而不是可用性而设计的,这是失败的。
很高兴知道我是否错了。如果我是对的,我很惊讶没有人尝试在 ASDF 之上构建类似 Python 模块的系统。
lisp - 如何选择在 DrScheme 中使用的语言?
我最近下载了 PLT Scheme 和 DrScheme。当我打开 DrScheme 时,我被告知选择一种语言。但是,我对我的任何选项都不熟悉,并且帮助指南并没有真正将其分解以帮助我轻松选择哪个选项。
那么,首先 - DrScheme 和 PLT Scheme 真的是我学习 Lisp 和/或 Scheme 所需的工具吗?如果是这样,有哪些不同的语言以及我应该使用哪些语言?
lisp - 我如何更清楚地表达这个 Scheme 功能?
我写了这个函数,但是我如何更清楚地表达这个,使用简单的递归和重复?
对不起,我忘了定义我的撰写功能。
该函数将计算 f 和正整数 n 的过程作为输入,并返回计算 f 的第 n 次重复应用的过程。
lisp - 如何让 Ltk 显示用户正在编写的内容以及函数打印的内容?
函数类型如下:
我已阅读 Ltk 文档,但似乎没有任何文本小部件使用示例。