2009-02-19 75 views
8

我知道在像Java这样的纯面向对象的语言中,使用像Hibernate这样的ORM通常是有意义的。但是在Clojure或Common LISP中编写CRUD类型的功能时,我会做什么?函数式编程和数据库交互的最佳实践是什么?

传递SQL作为第一阶函数?但是在HTML生成代码中没有SQL非常难看?

感谢,

Olek

回答

3

Common Lisp是不是自觉FP语言。 Clojure可以使用Hibernate。

对于Common Lisp:databases。这是一个persistent object one。并且here是教程的第一部分,它将其与Hunchentoot(一个CL web服务器和动态网页工具包)一起使用。 CL中的SQL(它看起来比实际更长,因为SQL是水平格式化的而CL不是)。如果你喜欢的话,this guy正在研究一个以粗糙为目标的Web框架(使用CLSQL和Elephant,已经链接到),并且关注弧面挑战。

编辑:a recent answer在此扩大。

+0

CL-SQL是非常好的,并展示了如何面向对象和功能可以一起工作。 – Svante 2009-02-19 13:35:08

1

乌尔/网络描述可能是有趣的,虽然它不是口齿不清基于:http://plv.csail.mit.edu/ur/

由于从他们的网站报价:

乌尔/ Web支持构建由SQL数据库支持的动态Web应用程序。标准库的签名是这样的:在很广泛的意义上,良好类型的Ur/Web程序“不会出错”。他们不仅不会在特定页面几代崩溃,但他们也可能不会:

  • 从任何类型的代码注入攻击遭受
  • 返回无效HTML
  • 含死内部应用程序的链接
  • HTML表单与其处理程序期望的字段不匹配
  • 包含客户端代码,这些代码对远程Web服务器提供的“AJAX”风格的服务做出了不正确的假设
  • 尝试无效的SQL查询
  • 使用不当编组或拆封通信与SQL数据库或浏览器和Web服务器之间