【发布时间】:2010-04-22 11:49:21
【问题描述】:
具有某种反射/内省的语言的一大好处是可以从各种来源自动构造对象。
例如,在 Java 中,我可以使用相同的对象来持久化到数据库(使用 Hibernate)、序列化为 XML(使用 JAXB)以及序列化为 JSON(json-lib)。你可以在 Ruby 和 Python 中做同样的事情,通常也遵循一些简单的 Java 属性或注释规则。
因此我不需要很多“域传输对象”。我可以专注于我正在工作的领域。
在 Haskell 和 Ocaml 等非常严格的 FP 中,这似乎是不可能的。 特别是哈斯克尔。我唯一看到的是做某种预处理或元编程(ocaml)。你是否接受了你必须从底部向上进行所有转换?
换句话说,您必须做很多无聊的工作才能将haskell 中的数据类型转换为JSON/XML/DB Row 对象,然后再转换回数据对象。
【问题讨论】:
-
“在非常严格的 FP [语言] [..] 中这是不可能的”——您遇到的问题不是由函数式编程引起的,而是由 Haskell/OCaml 的其他特性/限制引起的.
-
很公平。我应该说代数编译类型安全语言。是的,在 lisp 之类的东西中,这可能不是问题。严格 FP 的定义有点松散。即使使用像 Scala 这样你确实有反射的语言,首选的方法是“解析”数据(参见游戏 2 的 anorm)。
-
另外@mattfenwick 我不确定如果从标题中删除 Haskell 并搞砸谷歌,我是否喜欢你的编辑。这没有
标签: haskell serialization ocaml