如何使用LISP创建Web应用程序?

时间:2013-08-11 14:17:00

标签: web-applications lisp common-lisp

我有C#和JavaScript方面的经验,并且最近几年一直在使用Node.js.基本上,我对这种环境非常有信心,但是一种语言一直引起我的注意:LISP。鉴于其最小的语言概念,我发现LISP的表现力令人印象深刻且非常吸引人。它与jQuery基本相同:用更少的东西做更多的事情; - )

不幸的是,我对LISP的经验或多或少是理论上的,而且还有一些玩法,但不是认真的编程。

现在我想改变它,但我绝对致力于Web应用程序开发(因此Node.js)。我的问题不是学习LISP作为一种语言,我的问题是我不知道在哪里以及如何从“Hello LISP world”应用程序开始,该应用程序基于控制台,但基于Web

所以,我的问题基本上是:如何在LISP中编写类似于以下Node.js应用程序的服务器端Web应用程序

var http = require('http');
http.createServer(function (req, res) {
  res.end('Hello world!');
}).listen(3000);

不需要大量的框架和额外的库和东西等等?

经验丰富的LISP程序员如何解决这个问题?任何提示?

3 个答案:

答案 0 :(得分:21)

安装SBCLQuicklisp后,

(ql:quickload "hunchentoot")
(hunchentoot:start 
  (make-instance 'hunchentoot:easy-acceptor :port 3000))
(hunchentoot:define-easy-handler (foo :uri "/bar") (name)
  (format nil "Hello~@[ ~A~]!" name))

然后访问

http://127.0.0.1:3000/bar?name=World

答案 1 :(得分:9)

关于Hunchentoot的答案对于初学者来说真是一种方式,我完全建议尝试一下。

问题中与node.js变体唯一的主要区别是Hunchentoot是一个同步的Web服务器。如果你想获得相同的异步行为(实际上,为什么会这样,但这是另一个讨论;),你必须尝试别的东西,比如wookie。类似的Hello World示例在其documentation page处获得。

答案 2 :(得分:8)

为了补充其他答案,还有一个1和穴居人2,这些也有很好的记录。 Ningle路由与Sinatra / Flask非常相似。