Подтвердить что ты не робот

Как создать веб-приложение с помощью 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 решает эту задачу? Любые подсказки?

4b9b3361

Ответ 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.