Я все время слышу, что Lisp - действительно продуктивный язык, и мне нравится SICP. Тем не менее, мне не хватает чего-то полезного, что позволило бы мне заменить PHP для взаимодействия с серверной базой данных в веб-приложениях.
Есть ли что-то вроде библиотеки PHP PDO для Lisp, Arc, Scheme или одного из диалектов?






Cliki - хороший ресурс для библиотек Common Lisp: http://www.cliki.net/database
Существует проект под названием Elephant (http://common-lisp.net/project/elephant/index.html), который является абстракцией для сохранения объектов в CL.
newLISP - http://www.newlisp.org/ - поддерживает MySQL, но я не использовал его (newLISP).
Будьте предупреждены. Если вам нравится SICP, newLISP вас сильно разочарует.
Предупреждаем вдвойне: SICP использует схему, и большинство пуристов Lisp думают, что newLisp на самом деле больше схема, чем Lisp ...
Предупреждаем трижды: newLisp едва ли можно назвать Lisp.
Если вы довольны SQL как частью своей жизни, CL-SQL обеспечивает отображение в объекты CLOS. На вид он более зрелый, чем Слон.
Я использую его на своем собственном сайте.
Мы используем SBCL, UCW, CL-SQL и MySQL в качестве серверной части для Paragent.com. У нас это сработало очень хорошо. У нас также есть несколько клиентов, использующих UCW / CL-SQL / MySQL для пользовательских сайтов, которые мы создали с помощью нашего консультационного подразделения Битфауна.
newLisp поддерживает mysql5, и если вы посмотрите на вызовы функции mysql5, вы увидите, что он близок к PDO.
У меня были хорошие успехи с SBCL и CL-SQL. В CL-SQL есть API сопоставления объектов, но я использовал простой API SQL, который просто возвращает списки, и это сработало достаточно хорошо. А в языке Clojure вы взаимодействуете с JDBC через карты или структуры {: col1 "a",: col2 "b"}, поэтому сгенерированная библиотека классов не дает вам более простого кода, язык прекрасно справляется с этим. По моему опыту, между lisp и sql меньше проблем, чем между более статическими языками и sql.
наше ORM-решение Common Lisp - http://common-lisp.net/project/cl-perec/
базовая библиотека SQL - http://common-lisp.net/project/cl-rdbms/ (полностью протестирована с PostgreSQL, имеет игрушечный бэкэнд SQlite и несколько протестированный бэкэнд Oracle)
мы начали использовать CLSQL, но после некоторой борьбы решили развернуть свой собственный.
эти библиотеки и PostgreSQL используются в кластерном веб-приложении, разработанном для правительства Венгрии для планирования бюджета муниципалитетов. у него около 4000 пользователей, 500 на момент ознакомления. немного больше информации доступно на http://common-lisp.net/project/cl-dwim/
к сожалению, нет примеров, как его использовать :-(
hu.dwim.perec имеет обширный набор тестов, а также многие другие библиотеки hu.dwim. *.
Поскольку никто об этом не упомянул, вы можете попробовать Постмодерн, который является интерфейсом для PostgreSQL. Он нацелен на более тесную интеграцию с PostgreSQL и поэтому не претендует на переносимость между базами данных.
Я объединил его с горбун и cl-who и создал довольно хороший веб-сайт.
Postmodern великолепен, но OP запросил MySQL, для которого лучше подходит CLSQL (его ORM поддерживает больше функций, но postmodern чище и в целом работает лучше).
Пока вы переключаете свое Web-приложение на Lisp, подумайте об использовании персистентности: теперь у вас есть постоянно работающий образ Lisp, содержащий все, что касается вашего приложения. Я лично использовал для этого Слон.
Elephant может использовать CL-SQL или BDB в качестве бэкэнда, что означает, что вы можете использовать MySQL, если он у вас запущен. Однако я нашел использование SQLite действительно практичным.
Самым популярным коммерчески используемым диалектом Lisp в настоящее время является Common Lisp (который во многом отличается от схемы SICP), а библиотека CLSQL отлично работает с MySQL. Это очень просто настроить с помощью quicklisp (.org). Я использовал CLSQL в серьезных проектах, он надежный и очень мощный (хотя я бы порекомендовал PostgreSQL с Postmodern как лучший выбор).