12得票1回答
如何捕获在由C函数调用的Haskell回调函数中抛出的Haskell异常?

有没有一种好的方法可以捕获在由 C 函数调用的 Haskell 回调函数中抛出的 Haskell 异常? 例如,假设我有一个简单的C函数,它只是调用给定的回调函数:void callmeback ( void (*callback) () ) { callback (); } 还有一段H...

12得票2回答
如何将一个Rust对象借给C代码,使其具有任意生命周期?

我正在用Rust编写一个具有C接口的库。 C端必须能够创建和销毁Rust对象(C端拥有它们并控制它们的生命周期)。 我已经成功地将一个对象“泄露”给了C,但我不确定如何正确地释放它: ```rust pub extern "C" fn create() -> *mut Foo { l...

12得票2回答
连接到一个有extern "C"函数的C++库

我正在编写一个Rust FFI以连接一个具有C风格函数头的extern "C"块的C++库。我的低级FFI构建成功。 然而,当我在另一个项目中使用我的FFI时,它无法正确链接,出现了undefined reference to operator new()、delete()等问题。 我的问...

12得票1回答
PureScript FFI 到 mocha。

我正试图将 mocha 绑定写入 PureScript 中,但是 Control.Monad.Eff 使我完全不知所措。describe(function(){ //do stuff }); Describe是一个不需要参数并返回IO、Eff或意味着(发生副作用但没有返回值)的函数。 ...

12得票1回答
为什么GHC会和gcc、g++一起分发?

在Windows上,GHC随附gcc和g++,例如在ghc-7.6.3\mingw\bin下。从下载页面可以看到,在Windows二进制文件的下载中还指出了构建Windows“还包括编译C++文件的支持”。 我认为分发这些编译器仅仅是为了方便,因为Windows没有任何编译器。我也可以想象这...

12得票3回答
我应该使用libc::c_char还是std::os::raw::c_char?

我正在为Rust编写一个FFI包装器。我看到了libc::c_char和std::os::raw::c_char的用法。我的C语言知识非常有限,不知道这两者之间是否有区别。如果我想通过cffi将字符串暴露给Python,应该使用哪个?

12得票2回答
能否使用Haskell创建PHP扩展?

是否可以使用Haskell创建PHP扩展? 通常情况下,PHP扩展是使用C语言编写的。使用Haskell FFI为存根C扩展提供功能是否可行(或甚至是一个好主意)? 这种方法的注意事项有哪些?Zend是否在后台执行某些操作,会破坏这样的方案?

12得票1回答
Common-Lisp / Java 互操作性的可能方法有哪些?

为了避免在每个环节都重新发明轮子,我试图使用现有的工具,在特定的Java库中建立一个不错的Common Lisp环境。我的ABCL实践进展顺利,最终我能够让ABCL与它良好地交流。当然,我想要的不仅仅是这些,我还想让[it]和我半成品的wheel(化学信息学包)chemicl之间可以互操作。这...

12得票1回答
在Flutter Windows桌面应用中使用C++ DLL

我有一些用于与FTDI芯片交互的库,已经打包到了一个C++ DLL中。 我想使用Flutter创建一个前端,并在Windows桌面应用程序中使用该库。 这些功能在Flutter中仍然很新,文档非常浅显且仅限于移动设备。 根据这里的指南,我使用FFI创建了一个插件:import 'dart:ff...

11得票1回答
在Haskell中提高单子流的性能

最简单的单子“流”就是一个单子操作列表 Monad m => [m a]。函数 sequence :: [m a] -> m [a] 执行每个单子操作并收集结果。然而,由于它操作的是列表,单子在除了最简单的情况以外都不利于实现融合,所以 sequence 并不是很高效。 问题是:...