我有一个需要在 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’
据我所知,这些类型没有理由不兼容。