2

除了 ghc 之外,是否还有其他编译器支持 Haskell 外部函数接口,如The Haskell 98 Foreign Function Interface 1.0 An Addendum to the Haskell 98 Report

4

2 回答 2

3

nhc98声明它支持ffi

nhc98 编译器包含在 Hugs 和 ghc 中也可用的标准外部函数接口的实现。最新发布的 nhc98 版本实现了外部函数声明的最新标准语法,具体说明见:http ://www.cse.unsw.edu.au/~chak/haskell/ffi/

我不确定是否

合规说明

  • 支持的调用约定有:ccall、noproto 和 cast。(后两者是非标准的,见下文。)不支持的调用约定有:stdcall、jvm、dotnet、cplusplus。
  • 尚不支持外国进口“包装器”。
  • 注解unsafe在nhc98中没有特殊含义;它纯粹是对 ghc 的速度优化。
  • 外部导出规范被视为导出函数的实际类型签名。不允许您使用第二个(可能更通用的)类型签名。
  • 因此,您不能对外导出任何需要类字典的函数。

意味着支持只是部分的,或者这些是否是可选的东西,但 nhc98 是,据我所知,除了 GHC 之外,唯一一个至少支持大部分 FFI 规范的编译器。(hugs 不是编译器,而是解释器,它支持 [大部分] FFI 规范,就像 hugs 开发结束 [2006] 时那样。)

但是请注意,nhc98 也不再得到太多维护。

在积极维护的实现中,jhcUHC仅支持一小部分 FFI(原始外国进口),根据各自的主页,因此 GHC 基本上没有竞争。

于 2013-05-27T14:17:34.207 回答
0

所有 Haskell 实现都支持 FFI,根据定义,如果它不实现语言规范(包括FFI .

这意味着至少有拥抱、GHC、nhc98。

于 2013-05-27T14:21:08.957 回答