我知道在像Java这样的纯面向对象的语言中,使用像Hibernate这样的ORM通常是有意义的。但是在Clojure或Common LISP中编写CRUD类型的功能时,我会做什么?函数式编程和数据库交互的最佳实践是什么?
传递SQL作为第一阶函数?但是在HTML生成代码中没有SQL非常难看?
感谢,
Olek
我知道在像Java这样的纯面向对象的语言中,使用像Hibernate这样的ORM通常是有意义的。但是在Clojure或Common LISP中编写CRUD类型的功能时,我会做什么?函数式编程和数据库交互的最佳实践是什么?
传递SQL作为第一阶函数?但是在HTML生成代码中没有SQL非常难看?
感谢,
Olek
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在此扩大。
另一套的Common Lisp的工具在another answer
乌尔/网络描述可能是有趣的,虽然它不是口齿不清基于:http://plv.csail.mit.edu/ur/
由于从他们的网站报价:
乌尔/ Web支持构建由SQL数据库支持的动态Web应用程序。标准库的签名是这样的:在很广泛的意义上,良好类型的Ur/Web程序“不会出错”。他们不仅不会在特定页面几代崩溃,但他们也可能不会:
- 从任何类型的代码注入攻击遭受
- 返回无效HTML
- 含死内部应用程序的链接
- HTML表单与其处理程序期望的字段不匹配
- 包含客户端代码,这些代码对远程Web服务器提供的“AJAX”风格的服务做出了不正确的假设
- 尝试无效的SQL查询
- 使用不当编组或拆封通信与SQL数据库或浏览器和Web服务器之间
CL-SQL是非常好的,并展示了如何面向对象和功能可以一起工作。 – Svante 2009-02-19 13:35:08