标签: common-lisp

如何在常见的lisp中设置网络服务器?

几个月前,我受到Paul Graham撰写的宏观书籍ANSI Common Lisp的启发,以及Lisp可以作为你网络开发中的秘密武器的声明,由同一作者在他的博客上发表.哇,太神奇了.这是我一直在寻找的东西.作者真正开发了一个成功的Web应用程序并将其出售给雅虎.

有了这些令人鼓舞的图像,我决定花一些时间(1年或2年,谁知道)学习Common Lisp.也许有一天我会开发我的Web应用程序并变成一个伟大的Lisp专家.事实上,这是我第二次学习Lisp.几年前我第一次被着名的SICP迷住了,但后来发现Scheme对于现实生活的应用来说是如此令人难以置信的不成熟.

在阅读了ANSI Common Lisp的一些章节之后,我非常确定这本书是一本非常详尽的探索Common Lisp的书.然后我开始在Common Lisp中设置一个Web服务器.毕竟,如果你想学习一些东西,这应该是最好的方法.示威总是比定义更好.

正如Practical Common Lisp(顺便说一句,这本书也是一本很好的书)所建议的那样,我选择在一些Common Lisp实现上安装AllegroServe.然后,从其他地方,我了解到Hunchentoot似乎比AllegroServe更好.(我不记得这个词的来源和对象.所以不要和我争论.)

具有讽刺意味的是,你知道什么,我从来没有在任何Common Lisp实现上安装这两个包.更烦人的是,我甚至不知道为什么.机器总是吐出很多行话,导致我陷入混乱.我试过在互联网上搜索,但没有找到任何东西.

任何在Linux上成功安装这些软件包的人都可以告诉我你是怎么做到的吗?你遇到了什么麻烦吗?你怎么弄清楚出了什么问题并修好了?越详细越有帮助.

lisp linux webserver common-lisp

15
推荐指数
3
解决办法
4164
查看次数

Common Lisp有很好的遗产吗?(学习Common Lisp或更现代的变体如Scheme会更好吗?)

我想学习Lisp家族的一些语言.它可能是CL或Scheme,并尝试将其用于Web编程.纯娱乐.我有很多C++经验(专业发展).

但我希望我的选择是没有遗产的现代语言(在语言本身和库中),因为我想从一开始就学习好的设计模式.

我无法决定什么是更好的:CL或Scheme.CL拥有更大更优质的库和框架(Weblocks),但我听说它在语法和库方面有很多遗产.Scheme是另一种:简单,简洁的语法但是库很差.如果它没有遗产,我更喜欢CL.

我不喜欢学习像C++这样的另一个怪物.CL是否像Lisp系列中的C++一样?而Scheme就像是C#或Java - "修订版"的C++.

编辑:我想写功能样式,OOP可能是,但可选.

lisp scheme common-lisp

15
推荐指数
2
解决办法
1805
查看次数

在SBCL中使用步进器的一个简单示例

使用LispWorks步进器进行计算非常直观,但我无法在SBCL中找到它.有人可以给我一个如何在REPL中使用SBCL步进器的一些简单函数的分步示例吗?谢谢.

lisp debugging sbcl common-lisp stepper

15
推荐指数
1
解决办法
2694
查看次数

Common Lisp:在列表和数组之间进行转换

我们如何在任意嵌套列表和数组之间进行优雅转换?

例如

((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

#2A((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

反之亦然

arrays list common-lisp

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

Common Lisp:列表中的所有或任何元素都是真的

在Python中有函数all,any如果列表的全部或部分元素分别为true,则它们返回true.Common Lisp中是否有相同的功能?如果没有,那么最简洁和惯用的方式是什么?

目前我有这个:

(defun all (xs)
  (reduce (lambda (x y) (and x y)) xs :initial-value t))

(defun any (xs)
  (reduce (lambda (x y) (or x y)) xs :initial-value nil))
Run Code Online (Sandbox Code Playgroud)

lisp python list common-lisp

15
推荐指数
2
解决办法
1825
查看次数

在Common Lisp中,为什么(if)语句的多表达式主体需要(progn)?

这只是20世纪50年代遗留下来的一些历史遗留问题,还是在语法上存在一些理由,为什么(if)形式的多表达体需要(预测)?为什么不能将多个表达式包装在一组括号中,如(let):

   (if some-cond
     ((exp1) (exp2) (exp3)) ; multi exp "then"
     (exp4)) ; single exp "else"
Run Code Online (Sandbox Code Playgroud)

看起来编写一个宏来测试每个主体首先看它是否是一个列表,如果它是,如果它的第一个元素也是一个列表(因而不是一个函数调用),然后包装它的子组件,这似乎是微不足道的因此,在(预测)内.

lisp common-lisp

14
推荐指数
4
解决办法
6089
查看次数

Common Lisp:使用&rest参数

任何人都可以告诉我如何使用存储在&rest指定的值中的参数.

我已经阅读了很多内容,似乎作者只知道如何列出所有参数.

(defun test (a &rest b) b)
Run Code Online (Sandbox Code Playgroud)

这很好看,但不是很有用.

到目前为止我发现的最好的是使用第一个,第二个等等来获取你正在寻找的参数.

(defun test (a &rest b)
    (first b))
Run Code Online (Sandbox Code Playgroud)

我注意到这个方法在第十个参数停止工作,但是规范(从我读过的内容)支持至少50个.即使机会很小,我将使用50个参数,我想知道如何访问所有.

谢谢

lisp parameters common-lisp

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

是否可以为多个平台部署Common Lisp(或其他方言)桌面应用程序?

我想用Common Lisp或其他Lisp方言开发一个图形应用程序,可以部署在Mac,Windows和Linux中,作为提高我对这种语言知识的一种方式.理想的情况是:

  1. 会编译代码
  2. 会使用一个通用的图形库
  3. 不需要安装运行时环境.

我想制作一个小游戏或图形应用程序,并能够通过在具有任何这些操作系统的计算机中进行简单安装来显示它.

有人有类似情况的经验,或者可以指出我对图形库和编译器,运行时环境等的最佳选择......

谢谢!

lisp deployment graphics common-lisp

14
推荐指数
3
解决办法
3165
查看次数

lisp中的数据结构

我有一个简单的问题:将对象收集到列表中并向后遍历此列表.看起来很简单,但这段代码是高负载计算的一部分.使用conses是很自然的,因为它在添加新元素和顺序访问时需要O(1).但是,如果我需要一个有效的双链表来轻松地在两个方向上遍历它,我该怎么办?使用(反向)?它需要O(n)内存和时间,所以实际上它需要O(n ^ 2)在我的情况下(这是非常糟糕的).使用(最后)还是(追加)?同样的故事:O(n).我真的不知道在哪里可以找到关于标准库函数计算复杂性的任何信息(源代码除外).它是依赖于实现的吗?我需要做些什么才能实现各种标准数据结构?有没有有效使用conses的指南?

lisp common-lisp

14
推荐指数
2
解决办法
2216
查看次数

为什么尖锐引用lambda表达式?

它是On Lisp中经常使用的一种技术,它位于Common Lisp上:

> (mapcar #'(lambda (x) (+ x 10))
         '(1 2 3))
(11 12 13)
Run Code Online (Sandbox Code Playgroud)

为什么需要锐利报价甚至可能?lambda表达式返回函数对象,而尖锐的引用从名称返回函数对象.我也听说过关于lambda表达式是否是名称的矛盾信息 - 特别是On Lisp与标准相矛盾,但是他的代码似乎也与标准相矛盾.

在elisp中,似乎根本不需要它.令我惊讶的是,这里没有讨论词法范围,因此不清楚为什么它应该与Common Lisp完全不同.但是这个答案说不带引号的lambda表达式没有任何意义,因此,具有讽刺意味的是,有可能引入不带引号的lambda表达式作为引用的语法糖.但这与elisp手册中的声明相矛盾,即"在Emacs Lisp中,这样的列表是一个有效的表达式,可以计算出一个函数对象."

这个问题被标记为普通和e-lisp,因为我试图理解两者的理论模型,并通过了解它们的差异来学习它们.(更实际的是,我正在尝试学习elisp,但在Common Lisp上找到了很多很好的资源,所以我很想学习它们).

lisp lambda elisp common-lisp sharp-quote

14
推荐指数
3
解决办法
1719
查看次数