為什麼絕大多數 Haskell 的書籍都不講 FFI ?
07-12
補充一下,不是為了找資料學習,只是想知道為什麼正式出版的書里很少提及這麼一大塊領域。
我翻了下手頭的Haskell書籍。以下所列均有對Haskell FFI的介紹:
Beginning Haskell
Haskell 2010 Language Report
Haskell WikibookParallel and Concurrent Programming in HaskellProgramming with Refinement Types: An Introduction to LiquidHaskellReal World Haskell
The Glorious Glasgow Haskell Compilation System User』s GuideWhat I Wish I Knew When Learning Haskell但是沒必要都看過去,我覺得照ghc手冊和Haskell wiki寫一些例子就足夠入門了。
Haskell的FFI能用的就JavaScript FFI和C FFI。JavaScript FFI是Fay/Haste/GHCJS等Haskell -&> JavaScript編譯器使用的介面,每個編譯器的FFI的API寫法不同,具體請參考相應文檔。
C FFI是ghc支持的唯一FFI,使用時需要關注Haskell值和C值之間的marshalling,注意內存和異常管理,避免資源泄露。使用C FFI需要寫不少boilerplate code,尤其是處理複雜的C數據結構,這個時候有一些輔助工具可以幫助生成這些代碼,包括hsc2hs/c2hs/greencard,以及FPComplete最近發布的inline-c。在了解了ghc FFI的基本用法以後,可以參考以下文章,了解這些輔助工具的使用:
The Haskell Preprocessor Hierarchy : Inside 736-131Call C functions from Haskell without bindings因為Wiki和GHC文檔已經很詳細了呀
推薦閱讀:
※Robert Harper 不支持Haskell 的理由是?
※從字元串到能用的數據結構到底有多遠?——Haskell的Parsec實戰
※什麼是 Type Driven Development ?
※如何評價即將正式 release 的 GHC 8.2.1 ?
※[C++]代數數據類型與模式匹配
TAG:Haskell |