如果我想调用多个C函数,每个函数都取决于前一个函数的结果,那么创建一个处理这三个调用的包装器C函数是不是更好?它的成本是否与使用Haskell FFI而不转换类型相同?
假设我有以下Haskell代码:
foo :: CInt -> IO CInt
foo x = do
a <- cfA x
b <- cfB a
c <- cfC c
return c
每个函数cf*都是一个C调用。
在性能方面,创建一个像cfABC这样的C函数,并且只在Haskell中进行一次外部调用是不是更好?
int cfABC(int x) {
int a, b, c;
我一直在学习Haskell,但在白天的工作中,我正在编写Kotlin/Java。 我遇到过Eta (https://eta-lang.org/),这是一种Haskell方言,可以编译成Java字节码并在JVM上运行。在网站上,它说它有: Robust Interoperability
Eta has a strongly-typed Foreign Function Interface (FFI) that allows you to safely interoperate with Java. 但是在页面的下面有一个“即将到来”的部分,其中列出了互操作。所以我的问题是,在我进入设置开发
我编译了一个Haskell源代码包,将FFI实现为一个(.so)动态库。我想在OCaml中调用通过FFI导出的函数。为此,我实现了一个简单的驱动文件,如下所示
open Quelea.Shim
open Ctypes
open PosixTypes
open Foreign
let readEffects =
foreign "readEffects" (ptr char @-> ptr char @-> returning ptr string)
let effects = readEffects "csasc" "saxas
我是Haskell编程、外部函数接口和Stackoverflow的新手。我正在尝试为一个基于C的库构建一个Haskell FFI绑定。请在下面找到一个与我现在的问题非常相似的假设示例:
假设我有一个C结构和一个如下所示的函数:
typedef struct {
int someInt;
void *someInternalData;
} opaque_t;
int bar (opaque_t *aPtr, int anArg);
不透明的C结构是这里的out参数。我应该将其传递给其他API。调用方不需要取消引用不透明的结构。
找到以下包含FFI导入的myFFI.
如果使用Haskell作为库,从 my C程序调用,那么调用Haskell会对性能产生什么影响?例如,如果我有一个有问题的世界数据集,比如20 to的数据集,并且我想运行这样的操作:
// Go through my 1000 actors and have them make a decision based on
// HaskellCode() function, which is compiled Haskell I'm accessing through
// the FFI. As an argument, send in the SAME 20kB of data to
我有一个封闭源代码的非线程安全C++共享库,它提供了一个函数f ::ByteString -> ByteString。这个函数的运行时间可以在1秒到几个小时之间。
我正在寻找一种将计算分发到多个核心/服务器(SIMD)的方法。
简单地说,我正在寻找一个提供功能的框架
g :: Strategy b -> (a -> b) -> a -> b
将只能顺序调用的函数提升到与Haskell中的任何其他纯函数一样的函数。
例如,我希望能够写:
parMap rwhnf f args -- will not work
因为f通过FFI调用非线程安全库中的C函
我想通过LuaRocks安装库,以便从dlls访问函数。不幸的是,我没有找到二进制文件,所以我想我需要在我的计算机上编译一个ffi库。在用谷歌搜索了很长一段时间后,我发现了Alien库,所以我想通过命令luarocks install alien安装它。然后我收到一条消息:
Installing https://luarocks.org/alien-0.7.1-2.src.rock
Error: Could not find library file for FFI
No file ffi.lib in c:/external/lib
No file ffi.dll in c:/ex