Как создать веб-приложение с помощью LISP?
У меня есть опыт работы на С# и JavaScript, и я работаю последние несколько лет с Node.js. В принципе, я очень уверен в этой среде, но один язык всегда бросался в глаза: LISP. Я нахожу это впечатляющим и довольно увлекательным, как выразительный LISP, учитывая его минимальные языковые понятия. Это в основном как с jQuery: делать больше с меньшим; -)
К сожалению, мой опыт работы с LISP более или менее теоретический, а некоторые играют вокруг, но не серьезное программирование.
Теперь я хотел бы изменить это, но я определенно посвятил себя разработке веб-приложений (следовательно, Node.js). Моя проблема заключается не в том, чтобы узнать LISP как язык, моя проблема в том, что я не знаю, где и как начать с приложения "Hello LISP world", которое не основано на консоли, а на веб-интерфейсе.
Итак, мой вопрос в основном таков: как я могу написать веб-приложение на стороне сервера в LISP, которое похоже на следующее Node.js application
var http = require('http');
http.createServer(function (req, res) {
res.end('Hello world!');
}).listen(3000);
не требуя большого количества фреймворков и дополнительных библиотек и т.д. и т.д.
Как опытный программист LISP решает эту задачу? Любые подсказки?
Ответы
Ответ 1
Как только вы установите SBCL и Quicklisp,
(ql:quickload "hunchentoot")
(hunchentoot:start
(make-instance 'hunchentoot:easy-acceptor :port 3000))
(hunchentoot:define-easy-handler (foo :uri "/bar") (name)
(format nil "[email protected][ ~A~]!" name))
Затем посетите
http://127.0.0.1:3000/bar?name=World
Ответ 2
Ответ о Hunchentoot - действительно способ пойти на стартов, и я полностью рекомендую попробовать его.
Единственное существенное отличие от варианта node.js в вопросе заключается в том, что Hunchentoot является синхронным веб-сервером. Если вы хотите получить такое же асинхронное поведение (на самом деле, почему бы вам, но это для другого обсуждения;), вам нужно попробовать что-то еще, например wookie. Подобный пример Hello World выполняется на странице .
Ответ 3
Как и в дополнение к другим ответам, есть также ningle 1 и caveman 2, которые также являются прилично документировано. Маршрутизация Ningle очень похожа на Sinatra/Flask.