Веб-сервис с Lisp

Мне интересно использовать Lisp для поддержки современного веб-сервиса RESTful, но, учитывая множество вариантов и реализаций, трудно понять, с чего начать.

Я уверен, что есть люди, использующие Lisp для веб-приложений (просто трассировка через вопросы здесь, на SO показывает это), но то, что я хотел бы знать, , есть ли какие-либо реализации Lisp которые больше подходят для веб-сервисов, чем другие? (например, поддержка родного юникода, встроенные библиотеки, производительность и т.д.)

Я не ищу unicode "хаки" или веб-рамки. Меня больше всего интересует то, что вы получаете из коробки. Я не соглашался с какой-либо производной или реализацией Lisp, хотя у меня есть небольшой опыт работы с Common Lisp на CLISP (общий полиномиальный калькулятор в рамках курса по информатике). Было бы неплохо узнать, есть ли особенно хорошие варианты для этой проблемы, особенно из тех людей, которые действительно использовали Lisp таким образом.

Ответы

Ответ 1

Racket содержит веб-серверная библиотека. Я играл с ним, но чувствовал, что он не подходит для моего предпочтительного интерактивного способа работы с Lisp. Он имеет некоторые приятные функции, такие как поток управления, основанный на продолжении, поэтому стоит посмотреть.

Говоря из личного опыта, Common Lisp - отличный выбор для веб-разработки. Это то, что реализован в моем блоге. Hunchentoot прост и эффективен и очень Lispy. Интерактивное программирование поддерживается, а также может быть представлено, и есть плагины для таких вещей, как Websockets (которые мне еще не нужны, хотя).

Тем не менее, веб-программирование в Clojure так же приятно. Я реализовал веб-центр для моей семьи, используя Clojure и Noir. Stylewise, Noir очень похож на комбинацию Hunchentoot и cl-who. В качестве бонуса доступ к библиотекам Java может быть чрезвычайно полезным. (В моем случае реализация поддержки входа OpenID, которая была бы сложной с Common Lisp, была легкой с Clojure). Из-за этого, если вашему приложению необходимо взаимодействовать со сторонними веб-службами или форматами данных, Я предлагаю внимательно и долго смотреть на Clojure.

Интерфейсы REST просты в веб-фреймворках Hunchentoot/Noir. Я не могу судить о веб-сервере Racket в этом отношении, поскольку я недостаточно знаком с ним.

Ответ 2

Я знаю, что один может вам подойдет: Clack

Clack - это среда веб-приложений для Common Lisp, созданная Python WSGI и Ruby Rack.

Надеюсь, что это поможет.