11

私は C# と JavaScript の経験があり、ここ数年は Node.js を使用しています。基本的に、私はこの環境に非常に自信を持っていますが、LISP という 1 つの言語が常に私の目に留まりました。最小限の言語概念を考えると、LISP がいかに表現力豊かであるかは印象的で、非常に魅力的です。基本的には jQuery と同じです。

残念ながら、LISP に関する私の経験は多かれ少なかれ理論的なものであり、いくつかは遊んでいますが、本格的なプログラミングではありません。

今はそれを変えたいと思っていますが、私は間違いなく Web アプリケーション開発 (つまり Node.js) に専念しています。私の問題は、LISP を言語として学習することではありません。私の問題は、コンソール ベースではなく Web ベース「Hello LISP world」アプリケーションをどこからどのように開始すればよいかわからないことです。

したがって、私の質問は基本的に次のとおりです。次の Node.js アプリケーションに似たサーバー側 Web アプリケーションを LISP で作成するにはどうすればよいですか?

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

多くのフレームワークや追加のライブラリなどを必要とせずに?

経験豊富な LISP プログラマーは、このタスクをどのように解決するでしょうか? ヒントはありますか?

4

3 に答える 3

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
于 2013-08-11T16:26:33.540 に答える
9

Hunchentoot についての回答は、初心者向けの方法であり、試してみることを強くお勧めします。

問題の node.js バリアントとの唯一の大きな違いは、Hunchentoot が同期 Web サーバーであることです。同じ非同期動作を取得したい場合 (実際には、なぜそうなるのか、それはまた別の議論になります ;)、wookieのような別の方法を試す必要があります。同様の Hello World の例は、そのドキュメント ページで提供されています。

于 2013-08-11T19:39:25.367 に答える
8

他の回答を補完するのと同じように、 ningle 1と caveman 2もあり、これらも適切に文書化されています。Ningle ルーティングは、Sinatra/Flask と非常によく似ています。

于 2013-08-12T08:46:57.337 に答える