database orm functional-programming lisp crud

database - ¿Cuáles son las mejores prácticas para la programación funcional y la interacción con la base de datos?



orm functional-programming (3)

Sé que en lenguajes puros orientados a objetos como Java, normalmente tiene sentido usar ORM como Hibernate. ¿Pero qué haría cuando escribo una funcionalidad de tipo CRUD en Clojure o Common LISP?

¿Pasar SQL como las funciones de primer orden? Pero ¿no es muy feo tener SQL en el código de generación de HTML?

Gracias,

Olek


Ur / Web puede ser interesante, aunque no se basa en lisp: http://plv.csail.mit.edu/ur/

Según lo citado de su sitio:

Ur / Web admite la construcción de aplicaciones web dinámicas respaldadas por bases de datos SQL. La firma de la biblioteca estándar es tal que los programas Ur / Web bien tipados "no salen mal" en un sentido muy amplio. No solo no se bloquean durante determinadas generaciones de página, sino que tampoco pueden:

  • Sufre de cualquier tipo de ataque de inyección de código
  • Devuelve HTML no válido
  • Contiene enlaces muertos dentro de la aplicación
  • Tener desajustes entre formularios HTML y los campos esperados por sus controladores
  • Incluya el código del lado del cliente que hace suposiciones incorrectas sobre los servicios de estilo "AJAX" que proporciona el servidor web remoto
  • Intente consultas SQL no válidas
  • Usar referencias o bases de datos impropias en la comunicación con bases de datos SQL o entre navegadores y servidores web

Common Lisp no es un lenguaje consciente de FP. Clojure solo puede usar Hibernate.

Para Common Lisp: bases de datos . Aquí hay un objeto persistente . Y aquí está la primera parte de un tutorial que lo usa con Hunchentoot, un servidor web de CL y un conjunto de herramientas de página web dinámico. SQL en CL puede verse así (que parece más largo de lo que realmente es, porque el SQL tiene un formato horizontal y el CL no). Y si lo desea, este tipo está trabajando en un marco web (utilizando CLSQL y Elephant, ya enlazado) que apunta a la integridad, con la vista puesta en el desafío del arco.

EDITAR: una respuesta reciente se expande en esto.


un conjunto alternativo de herramientas Common Lisp se describe en otra respuesta