JSaddle - jsg1函数参数中h $前缀的神奇之处在于什么

时间:2017-10-02 14:56:57

标签: haskell

函数jsgjsg1jsaddle package允许对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

在这两种情况下,参数 Uint8Array Uint16Array 都是Javascript中众所周知的全局名称。 很容易找到有关所有这些名称的Javascript文档。

使用函数 jsg1 的例子,例如 here 然而,here使用stange字符串 例如h$wrapBufferh$newByteArrayFromBase64String。谷歌搜索这些字符串,特别是在 h $ newByteArrayFromBase64String 上,并没有给出任何有意义的结果。

jsg1 函数的参数中字符串的含义是什么?他们在哪里定义?哪些其他字符串可以作为jsg1参数? h $ 前缀是一个约定,会触发一些隐藏的魔法吗?

1 个答案:

答案 0 :(得分:1)

没有魔力。 h$前缀只是为了避免与其他JavaScript库可能使用的任何内容发生冲突。

These modules仅在if impl(ghcjs)的else分支中公开,因为在使用GHCJS进行编译时,它们是由ghcjs-base软件包提供的。

使用GHC进行编译时,两个h$函数将与jsaddle here所需的其他JavaScript一起加载到JavaScript上下文中。