Questions tagged «common-lisp»

Common Lisp是Lisp编程语言的标准版本,旨在提高生产能力。

23
学习LISP的最佳方法是什么?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经使用Python,PHP,Java和C进行编程已有两年或几年了,而我刚读完Hackers and Painters,所以我想尝试一下LISP! 我知道它与我所知道的完全不同,而且这并不容易。我也认为(如果我错了,请纠正我)围绕LISP的社区和开发方式会更少。所以我的问题是:学习LISP的最佳方法是什么? 我不介意买书或花一些时间。我只是不想浪费它。 “最终”的想法是使用LISP进行Web开发,我知道这并不常见,所以...我知道在选择第一本书或教程并花很多时间去做可能没有的东西之前,先计划好我的学习是很好的成为最好的方法! 谢谢大家的答案! 编辑:我读了《实践通用Lisp》,并且:... ...漫长,艰苦,有趣,并且确实使我在Lisp中滚动,之后,我阅读了这个小编程器,它简短,有趣,并且对我的整体编程非常好。因此,我的建议是先阅读小策划者,然后(几个小时,这是值得的),如果您确定Lisp(或计划或其他方言)不是您要找的东西,您仍然会觉得很有趣递归的新思维方式!
167 lisp  scheme  common-lisp 


30
Lisp在现实世界中
我已经对Lisp(实际上是Scheme)进行了实验,发现它是一门非常美丽的语言,我有兴趣进一步学习。但是,似乎Lisp从未在严肃的项目中使用过,而且我还没有将Lisp列为任何职位发布中所需要的技能。我很高兴听到有人使用Lisp或看到它在“现实世界”中使用过,或者知道它是否被视为纯粹的学术语言。

4
请解释保罗·格雷厄姆(Paul Graham)关于Lisp的一些观点
我需要一些帮助来了解Paul Graham的《What Lisp Lisp Different》中的一些要点。 变量的新概念。在Lisp中,所有变量实际上都是指针。值是具有类型的变量,不是变量,分配或绑定变量意味着复制指针,而不是它们指向的指针。 符号类型。符号与字符串的不同之处在于,您可以通过比较指针来测试是否相等。 使用符号树的代码符号。 整个语言始终可用。读取时间,编译时间和运行时之间没有真正的区别。您可以在读取时编译或运行代码,在编译时读取或运行代码,以及在运行时读取或编译代码。 这些要点是什么意思?它们在诸如C或Java之类的语言中有何不同?除Lisp家族语言外,其他语言现在是否具有这些构造?

12
为什么到底是邪恶?
我知道Lisp和Scheme程序员通常会说eval除非绝对必要,否则应避免这样做。对于几种编程语言,我已经看到了相同的建议,但是尚未看到反对使用的明确参数列表eval。在哪里可以找到有关使用潜在问题的说明eval? 例如,我知道GOTO过程编程中的问题(使程序难以阅读且难以维护,很难找到安全性问题,等等),但是我从未见过反对的论点eval。 有趣的是,相同的论点GOTO应该对延续有效,但我看到例如Schemers不会说延续是“邪恶的”-使用它们时应该小心。与eval使用延续的代码相比,他们更不喜欢使用代码(据我所知-我可能是错的)。


4
Clojure与其他Lips的比较[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我提出这个问题的目的不是发动一场火焰之战,而是确定每种语言在什么情况下是“从事这项工作的最佳工具”。 我已经阅读了几本有关Clojure的书(编程Clojure,实用Clojure,Clojure 的喜悦以及Clojure in Action的Manning早期访问版),我认为它是一种很棒的语言。我目前正在阅读Let Over Lambda,它主要处理Common Lisp宏,它也是一种非常有趣的语言。 我不是 Lisp专家(更多的是新手),但是这种语言家族和函数式编程一样,让我着迷。 Clojure的优点(和“其他”的缺点): 在JVM上运行。 JVM是一种非常稳定的高性能语言环境,完全符合Sun的梦想:“编写一次,几乎可以在任何地方运行”。我可以在Macbook Pro上编写代码,将其编译为可执行的JAR文件,然后在不进行额外测试的情况下在Linux和Microsoft Windows上运行它。 (热点和其他)JVM支持高质量的垃圾收集以及非常高效的即时编译和优化。几年前,我编写了必须在C中快速运行的所有内容,而现在我毫不犹豫地在Java中这样做。 标准,简单的多线程模型。Common Lisp是否具有标准的多线程程序包? 用[],{}和打破所有括号的单调性#{},尽管Common Lisp专家可能会告诉我,使用阅读器宏,您可以将其添加到CL中。 Clojure的缺点: 在JVM上运行。 无尾递归或连续。Common Lisp是否支持延续?我认为,计划需要两者的支持。 他人的优点(尤其是Lisp的常见缺点)(以及Clojure的缺点): 用户可定义的阅读器宏。 其他优势? 有什么想法吗?其他差异?

11
使用Vim进行Lisp开发
我已经使用Lisp了一段时间,但是我开始对在Lisp中进行一些“实际”工作变得更加认真。我是Vim的忠实拥护者,想知道如何将Vim用作Lisp开发的编辑器来提高生产力。欢迎插件,工作流程建议等。 请不要说“使用emacs”,因为我已经对Vim有所了解,作为编辑我真的很喜欢它。
87 vim  ide  lisp  common-lisp 

16
Common Lisp中的LET与LET *
我了解LET和LET *(并行绑定和顺序绑定)之间的区别,从理论上讲,这很有意义。但是,在任何情况下,您实际需要LET吗?在我最近查看的所有Lisp代码中,您可以将所有LET替换为LET *,而无需进行任何更改。 编辑:好的,我知道为什么有人发明了LET *(大概是一个宏),可以追溯到何时。我的问题是,考虑到LET *的存在,LET有理由留在身边吗?您是否编写了任何实际的Lisp代码,而LET *不能像普通LET一样有效? 我不赞成效率论点。首先,认识到可以将LET *编译成与LET一样高效的情况似乎并不难。其次,CL规范中有很多东西似乎根本就不是围绕效率而设计的。(如果是你看到了类型声明循环中的最后一次?这些都是如此很难搞清楚我从来没有见过他们使用)前的1980年代末的迪克·加布里埃尔的基准,CL是彻头彻尾的慢。 看来这是向后兼容的另一种情况:明智地,没有人愿意冒险破坏像LET这样的基本功能。这是我的直觉,但是令人欣慰的是,没有人遇到一个愚蠢而简单的案例,而LET使一堆事情比LET *容易得多。
80 lisp  common-lisp 

6
建造LISP机器需要多少个原语?十,七或五?
在此站点上,他们说有10个LISP原语。这些原语是:atom, quote, eq, car, cdr, cons, cond, lambda, label, apply。 http://hyperpolyglot.wikidot.com/lisp#ten-primitives Stevey估计有七个(或五个): LISP思想纯净的一部分是:您只需要七个(或者是五个?)原语即可构建完整的计算机。 http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html 建造LISP机器的最小原语数量是多少(即可以在LISP代码上运行eval / value函数的东西)?(那是谁?) (我可以理解您可以没有atom, label and apply)

2
在哪里学习如何实际使用Common Lisp [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我是一名试图学习Common Lisp的C ++程序员。我看过《 Lisp之地》等书籍,并阅读了许多有关Lisp各种优点的在线文章。但是,我需要一些建议。 我所读到的有关Common Lisp的几乎所有内容都与它的惊人性,完成它的速度有多惊人以及它如何惊人地解决了30年前现代编程语言的许多问题有关。此外,还有多么惊人的宏,以及如何在Lisp中使用每个编程范例(OO,功能,基于actor的对象等等),以及列表如何成为最终的数据结构。基本上把Lisp当作一种研究语言,并说它是多么与众不同和具有革命性。 所有这些东西可能都是正确的,但是问题是我还没有多少东西可以做一些实际的事情,例如读取文件并将其拆分为单词并对其进行一些处理。为了学习Common Lisp,我对学习Common Lisp并没有兴趣,但是为了让我以前在C ++中所做的事情变得更快,出错更少。 因此,我的问题是什么是最好的资源(无论是网站,书籍还是其他任何东西),该资源重点在于教授如何使用Common Lisp执行常见的编程任务,例如 如何读取文件 如何读取文件,替换文件中的单词并将结果写回到文件中 遍历目录和其他文件系统中的文件 与SQL数据库交互 通过套接字进行通信 诸如Web服务器之类的线程 创建GUI 对二进制文件执行操作 编写一个解析器(不是Lisp中Lisp的解释器,据我了解这就像Lisp的5行一样) 与操作系统(例如,用C或C ++编写的东西)进行交互以完成Lisp无法本地完成的工作 如何用C语言编写Lisp扩展名(可以吗?) 嵌入lua解释器(可以吗?) 而且也不太实际,立即注意到,如何实现共同的数据结构,口齿不清,如堆,栈,二叉搜索树等,但可能只是使用像Lisp的列表操作car,并cdr以正确的方式。我不知道。 我高度怀疑,使用Lisp不可能实现以上任何一项(除了清单中的最后两个例外),否则人们不会非常喜欢它。我读过的上述内容提到了许多用Lisp(Yahoo!网站商店)编写的现实世界软件。 但是,在以前使用(the?)命令性语言进行编程之后,我急于使用我所获得的新知识来编写实际的应用程序。那么用Lisp学习编写实用软件的最快方法是什么? 顺便说一句,我看到彼得·塞贝尔的实践Common Lisp的,但是,以TOC来看,它只是触及了一些我想学习使用Lisp的做的事情。 我是否可以再提出一个问题(对不起,如果将两个问题合并为一个问题),在哪里可以找到对Lisp函数和内容的引用? 我真的很想喜欢Lisp。
79 lisp  common-lisp 

4
Scheme和Common Lisp之间的实际区别是什么?(或Lisp的其他两种方言)
注意:我不是在问要学习哪个,哪个更好或者类似的东西。 我选择了SICP的免费版本,因为我觉得读起来会很高兴(我听说过很多不错的东西,并且我对编程的这种方面很感兴趣)。 我知道Scheme是Lisp的方言,我想知道:Scheme与Common Lisp之间的实际区别是什么? 似乎有很多关于“ CL具有更大的stdlib ...方案对于实际编程不利的..”,但实际上并没有说“这是因为CL是这个/拥有这个”。


9
为什么Lisp社区如此分散?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 首先,不仅有该语言的两个主要方言(Common Lisp和Scheme),而且每个方言都有许多单独的实现。例如,Chicken Scheme,Bigloo等……每个都有细微差别。 从现代的角度来看,这很奇怪,因为如今的语言倾向于具有确定的实现/规范。考虑一下Java,C#,Python,Ruby等,其中每个都有一个单独的权威站点,您可以从中找到API文档,下载等。当然,Lisp早于所有这些语言。但是话又说回来,甚至C / C ++也已经标准化(或多或少)。 这个社区的分裂是由于Lisp的年龄造成的吗?还是不同的实现/方言旨在解决不同的问题?我知道有充分的理由使Lisp永远不会像在单一的确定性实现中成长起来的语言那样统一,但是在这一点上,有充分的理由使Lisp社区不应该朝这个方向发展吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.