1

我有一个需要在 GHCJS 中通过 XHR 发送的 ByteString,但我一生都无法弄清楚如何将该 ByteString 放入 XHR 的 RequestData

data RequestData = NoData
                 | StringData     JSString
                 | TypedArrayData (forall e. SomeTypedArray e Immutable)
                 | FormData       [(JSString, FormDataVal)]

显然TypedArrayData是我需要使用的,但我完全没有运气弄清楚如何将 ByteString 转换为适合其中的内容。我看着这个,我尝试了这样的事情。

setData r bs = do
    let (b, _, _) = fromByteString $ toStrict bs
    return r { XHR.reqData = XHR.TypedArrayData $ getUint8Array b }

但由于某种原因,我遇到了一个奇怪的错误。

Couldn't match kind ‘AnyK’ with ‘*’
Expected type: GHCJS.Buffer.Types.SomeBuffer
                 'ghcjs-base-0.2.0.0:GHCJS.Internal.Types.Immutable
  Actual type: Buffer
In the first argument of ‘getUint8Array’, namely ‘b’
In the second argument of ‘($)’, namely ‘getUint8Array b’

据我所知,这些类型没有理由不兼容。

4

0 回答 0