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