Межбиблиотечные зависимости Haskell FFI - PullRequest
1 голос
/ 11 января 2012

Я поддерживаю библиотеку augeas FFI на http://hackage.haskell.org/package/augeas

Недавно augeas добавил метод aug_to_xml , который включает параметр с типом xmlNode из libmxl2. Похоже, libxml является библиотекой FFI для libxml2, но она не обновлялась некоторое время, и, похоже, не имеет упаковки Debian, поэтому я не решаюсь добавить ее в качестве зависимости в библиотеку augeas FFI.

Поэтому мой вопрос: когда я добавлю поддержку FFI для этой функции, было бы лучше добавить зависимость к libxml, что позже может привести к проблемам с упаковкой, или лучше использовать что-то вроде opaque введите в соответствии с кулинарной книгой FFI, чтобы не было межбиблиотечной зависимости?

Если я использую метод непрозрачных типов и пользователи хотят использовать libxml самостоятельно, могут ли они приводить мой тип в качестве Text.XML.LibXML.Node?

1 Ответ

1 голос
/ 11 января 2012

Непрозрачный тип, вероятно, является лучшим маршрутом, если вы хотите включить функцию, но я бы скептически отнесся к функции, которая может использоваться только с небезопасным приведением к типу другой библиотеки (что было бы действительно возможно, да, но полагаться на внутреннее представление связывания libxml Node, чтобы не измениться - рискованно).

Я бы предложил просто не добавлять функцию; если кто-то захочет использовать его, он может легко импортировать его самостоятельно, и если ваша привязка является подходящей прямой, им, вероятно, будет легко использовать ее с типами вашей привязки. Конечно, если он, вероятно, будет широко использоваться, вы можете легко объединить его в пакет, хотя я очень сомневаюсь, что пакет, который был последний раз обновлен в 2008 году и даже не основывается на GHC 6.12 и выше, получит много пользы.

Итак, я бы просто исключил функцию из вашей привязки или использовал непрозрачный тип, если вы действительно хотите включить его.

...