我知道在像 Java 这样的纯面向对象语言中,使用像 Hibernate 这样的 ORM 通常是有意义的。但是在 Clojure 或 Common LISP 中编写 CRUD 类型的功能时我会怎么做?
将 SQL 作为一阶函数传递?但是在 HTML 生成代码中使用 SQL 不是很丑陋吗?
谢谢,
奥莱克
我知道在像 Java 这样的纯面向对象语言中,使用像 Hibernate 这样的 ORM 通常是有意义的。但是在 Clojure 或 Common LISP 中编写 CRUD 类型的功能时我会怎么做?
将 SQL 作为一阶函数传递?但是在 HTML 生成代码中使用 SQL 不是很丑陋吗?
谢谢,
奥莱克
Ur/Web 可能很有趣,尽管它不是基于 lisp:http: //plv.csail.mit.edu/ur/
正如他们的网站所引用的:
Ur/Web 支持构建由 SQL 数据库支持的动态 Web 应用程序。标准库的签名使得类型良好的 Ur/Web 程序在非常广泛的意义上“不会出错”。它们不仅不会在特定页面生成期间崩溃,而且它们也可能不会:
- 遭受任何类型的代码注入攻击
- 返回无效的 HTML
- 包含无效的应用程序内链接
- HTML 表单与其处理程序预期的字段不匹配
- 包括对远程 Web 服务器提供的“AJAX”样式服务做出错误假设的客户端代码
- 尝试无效的 SQL 查询
- 在与 SQL 数据库或浏览器和 Web 服务器之间的通信中使用不正确的编组或解组
另一个答案中描述了一组替代的 Common Lisp 工具