2013-05-27 4 views

ответ

3

nhc98 заявляет, что он поддерживает ffi:

nhc98 компилятор содержит реализацию стандартной внешней функции интерфейса, который также доступен в Объятия и GHC. Самая последняя выпущена версия nhc98 реализует последний стандартный синтаксис деклараций о внешней функции, как указано в: http://www.cse.unsw.edu.au/~chak/haskell/ffi/

Я не уверен,

Соответствие отмечает ли

  • Поддерживаемые вызова Соглашения: ccall, noproto и cast. (Последние два являются нестандартными, см. Ниже). Неподдерживаемые соглашения о вызове: stdcall, jvm, dotnet, cplusplus.
  • импорт «обертка» по-прежнему не поддерживается.
  • Аннотации, небезопасные, не имеют особого значения в nhc98; это просто оптимизация скорости для ghc.
  • Внешняя спецификация экспорта рассматривается как фактическая подпись типа для экспортируемой функции. Вам не разрешена вторая (возможно, более общая) подпись типа.
  • Следовательно, вы не можете экспортировать иностранные функции, требующие словаря класса.

означает, что поддержка только частично, или являются ли эти дополнительные вещи, но nhc98 есть, насколько я знаю, единственный компилятор, кроме GHC, который поддерживает по крайней мере, большой кусок FFI спецификации. (hugs - это не компилятор, а интерпретатор, он поддерживал [большую часть] спецификации FFI, как это было при завершении разработки объятий [2006].)

Обратите внимание, однако, что nhc98 также не поддерживается.

Из активно поддерживаемых реализаций jhc и UHC поддерживают только небольшую часть FFI (примитивный импорт извне) в соответствии с их домашними страницами, поэтому GHC в основном без конкуренции.

0

реализации Все Haskell поддерживают FFI, так как, по определению, это не компилятор Haskell, если он не реализует спецификацию языка (который включает в себя the FFI.

Это означает Hugs, GHC, nhc98 как минимум

+2

Но так GHC не является компилятором Haskell, поскольку, например, в отчете говорится, что разрешены взаимно рекурсивные модули, но GHC не полностью их поддерживает. – scravy

Смежные вопросы