2017-10-02 1 views
1

機能jsgjsg1 はJavaScript関数への低レベルの呼び出しを行うことができます。

jsaddleパッケージには、さらにいくつかのexamples of how to use jsg1などがあります。どちらの場合も

uint8ArrayFrom (SomeJSArray a) = SomeTypedArray <$> jsg "Uint8Array" ^. js1 "from" a

uint16ArrayFrom (SomeJSArray a) = SomeTypedArray <$> jsg "Uint16Array" ^. js1 "from" a

Uint8ArrayUint16ArrayがうまくJavaScriptでグローバル名を知られているパラメータを。 これらすべての名前に関するJavascriptのドキュメントを見つけるのは簡単です。

しかし機能jsg1例えば herehereの使用例、使用スタンジェ列h$wrapBufferh$newByteArrayFromBase64Stringなどの 。 h $ newByteArrayFromBase64Stringのこれらの文字列を検索すると、意味のある結果は得られません。

jsg1関数の引数の文字列の意味は何ですか?それらはどこに定義されていますか?どの他の文字列がjsg1引数として可能ですか? h $接頭辞は、いくつかの隠された魔法を引き金にするものですか?

+1

これまでにghcjsを使ったことがないので、ghcjsランタイムによって提供されるJavascriptの関数名が推測されます。 –

+0

@Daniel Wagner:あなたの偽装が間違っている理由の1つ:GHCでHaskell JSaddleプログラムをコンパイルし、WebkitGtkで実行できます。したがってGHCJSは関与していません。 – Jogger

答えて

1

魔法はありません。プレフィックスh$は、他のJavaScriptライブラリで使用される可能性のあるものとの衝突を避けるためのものです。

These modulesは、if impl(ghcjs)のelseブランチで公開されているのは、GHCJSでコンパイルするときにghcjs-baseパッケージによって提供されるためです。

GHCでコンパイルすると、2つのh$関数がjsaddle hereに必要な他のJavaScriptと一緒にJavaScriptコンテキストにロードされます。