Common Lisp中的Web开发

时间:2012-05-08 00:39:54

标签: lisp common-lisp

我对Scheme有点熟悉。我正在阅读OnLisp,并希望在其中做一个真实的世界项目。最有可能的是Web开发。我很想知道人们在lisp中使用什么样的设置来开发网站。我家里有几台麦克风,我想我会用clozure cl。我对一些事情很谨慎。我已经在互联网上看到cl没有可靠的线程设施,也没有良好的网络。这是真的?你的经历是什么?

PS:不要告诉我关于clojure :)。 Lisp是我需要抓挠的痒。

4 个答案:

答案 0 :(得分:8)

目前,我正在使用基于Hunchentoot的{​​{3}}框架,并受到Rails路由系统的启发。我还使用RestasPostgreSQL数据库进行交互,并使用Postmodern生成HTML,但我正在考虑切换到cl-markup,这看起来更具可定制性。

当我开始时,我还考虑使用cl-who来生成JavaScript,但现在我对Parenscript和普通JavaScript感到满意。

所有内容都在SBCL上运行,并且可以使用Quicklisp。

答案 1 :(得分:6)

不确定为什么它不会有“良好的网络”;如果你想编写一个可移植的Common Lisp应用程序,你不能依赖线程,因为某些实现不支持它们(AFAIK,只是clisp,尽管你可以用实验性线程支持编译它)。如果您打算选择一个实现并坚持使用它,那么您将不会遇到这个问题。

“标准”CL网络堆栈为Hunchentoot / cl-who / clsql,但您可以找到在AraneidaPortable AllegroServe上运行的教程。< / p>

我使用的设置是Debian / SBCL正在运行quicklisp以及上述系统和MySQL(尽管我正在认真考虑跳转到Postgres)数据库和nginx在Hunchentoot前运行,提供任何静态内容。

答案 2 :(得分:3)

mck-一直在维护heroku常见的lisp webapp。

https://github.com/mck-/heroku-cl-example/tree/

答案 3 :(得分:2)

Common Lisp的“网络”问题是,我们没有CL标准的套接字,所以每个实现都有它自己的套接字API。我们尝试提供一个通用接口,例如usocket。您可以找到与网络相关的软件包列表here

如果您需要Web框架,请查看Caveman。我还没有使用它,但它看起来像我见过的最完整的CL Web框架。