【问题标题】:Haskell FFI interlibrary dependenciesHaskell FFI 库间依赖关系
【发布时间】:2012-01-11 22:20:42
【问题描述】:

我在 http://hackage.haskell.org/package/augeas 维护 augeas FFI 库

最近 augeas 添加了一个 aug_to_xml method,其中包含一个来自 libmxl2 的 xmlNode 类型的参数。看起来libxml 是 libxml2 的 FFI 库,但它已经有一段时间没有更新了,而且它看起来没有 Debian 打包,所以我很犹豫将它添加为 augeas FFI 的依赖项图书馆。

所以我的问题是,当我为这个函数添加 FFI 支持时,将依赖项添加到 libxml 会更好,这可能会导致稍后出现打包问题,还是使用类似 opaque type 的东西会更好根据 FFI 食谱,所以没有库间依赖关系?

如果我采用不透明类型的方法,并且用户希望自己使用 libxml,他们可以将我的类型转换为 Text.XML.LibXML.Node 吗?

【问题讨论】:

  • 上次上传 libxml 是三年半前。这很可能是一个废弃的项目。在将其添加为依赖项之前,请咨询维护人员。

标签: haskell libxml2 ffi


【解决方案1】:

如果您想包含该函数,则不透明类型可能是此处的最佳途径,但我对包含一个仅在不安全强制转换为另一个库的类型时才可用的函数持怀疑态度(这确实是可能的,是的,但会依赖 libxml 绑定的Node 的内部表示来不改变——有风险)。

我建议干脆不添加该功能;如果有人想使用它,他们可以轻松地自己导入它,并且如果您的绑定是适当直接的,那么他们可能很容易将它与您的绑定类型一起使用。当然,如果它很可能被普遍使用,你可以很容易地把它单独打包成一个包,尽管我非常怀疑最后一次更新是在 2008 年并且甚至不基于 GHC 6.12 构建的包将会得到很有用。

所以,我会从您的绑定中省略该函数,或者如果您确实想包含它,请使用不透明类型。

【讨论】:

猜你喜欢
  • 2011-06-14
  • 2012-04-06
  • 1970-01-01
  • 2018-10-20
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多