3

Pure-Script で外部 JavaScript ファイルを読み込むにはどうすればよいですか?

外部インポート ステートメントはすべて JavaScript コードをインライン化しますが、それらを外部ファイルからロードしたいと考えています。

4

1 に答える 1

4

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にインポートをラップする関数を定義する必要があります。エフモナド。

于 2015-03-06T12:16:00.320 に答える