Каковы лучшие практики для функционального программирования и взаимодействия с базой данных? - PullRequest
9 голосов
/ 19 февраля 2009

Я знаю, что в чисто объектно-ориентированных языках, таких как Java, обычно имеет смысл использовать ORM, такие как Hibernate. Но что я буду делать при написании функций типа CRUD в Clojure или Common LISP?

Передача SQL как функции первого порядка? Но разве SQL в коде, генерирующем HTML, не очень уродлив?

Спасибо

Олек

Ответы [ 3 ]

3 голосов
/ 19 февраля 2009

Common Lisp не является самосознательно языком FP. Clojure может просто использовать Hibernate.

Для Common Lisp: базы данных . Вот постоянный объект один . И здесь - это первая часть учебника, в которой он используется с Hunchentoot, веб-сервером CL и инструментарием для динамических веб-страниц. SQL в CL может выглядеть следующим образом (который выглядит длиннее, чем на самом деле, потому что SQL отформатирован горизонтально, а CL - нет). И если хотите, этот парень работает над веб-фреймворком (с использованием уже связанных с CLSQL и Elephant), который стремится к ускорению, ориентируясь на вызов дуги.

РЕДАКТИРОВАТЬ: недавний ответ расширяется на этом.

1 голос
/ 09 апреля 2015

Ur / Web может быть интересным, хотя он не основан на lisp: http://plv.csail.mit.edu/ur/

Как указано на их сайте:

Ur / Web поддерживает создание динамических веб-приложений на основе баз данных SQL. Подпись стандартной библиотеки такова, что хорошо типизированные программы Ur / Web «не ошибаются» в широком смысле. Они не только не аварийно завершают работу при определенных поколениях страниц, но и не могут:

  • страдать от любых видов атак с использованием кода
  • Вернуть неверный HTML
  • Содержит мертвые ссылки внутри приложения
  • Наличие несоответствий между формами HTML и полями, ожидаемыми их обработчиками
  • Включите код на стороне клиента, который делает неверные предположения о службах стиля "AJAX", которые предоставляет удаленный веб-сервер
  • Попытка неверных запросов SQL
  • Использование неправильного маршалинга или демаршалинга при связи с базами данных SQL или между браузерами и веб-серверами
0 голосов
/ 19 февраля 2009

альтернативный набор инструментов Common Lisp описан в другой ответ

...