Pure-Script で外部 JavaScript ファイルを読み込むにはどうすればよいですか?
外部インポート ステートメントはすべて JavaScript コードをインライン化しますが、それらを外部ファイルからロードしたいと考えています。
Pure-Script で外部 JavaScript ファイルを読み込むにはどうすればよいですか?
外部インポート ステートメントはすべて JavaScript コードをインライン化しますが、それらを外部ファイルからロードしたいと考えています。
ffi を使用して、標準のグローバル commonjsrequire
関数をラップできます。
foreign import require :: forall a. String -> a
その後、次のようにライブラリをインポートできます
-- Tell the compiler the structure of what you're importing.
type MyLibrary = {
add :: Number -> Number -> Number
}
-- Call the require function and import the library.
-- We need an explicit type annotation so the compiler know what's up
myLib = require './mylib' :: MyLibrary
main = do
let x = myLib.add 1 2
doSomethingWith x
purescript は、外部ライブラリーの関数がカリー化されていると想定していることに注意してください。複数の引数を取る関数を呼び出す必要がある場合は、もう少しボイラープレートが必要になります。つまり、mkFn を使用します。
その方法の詳細については、こちらを参照してください。
https://github.com/purescript/purescript/wiki/FFI-tips
補足 - この例では「require」は純粋な関数として実装されていますが、使用しているライブラリがインポート中に副作用を実行する場合 (残念ながらこれは珍しいことではありません)、代わりrequireEff
にインポートをラップする関数を定義する必要があります。エフモナド。