尝试使用escript json组合子为decodeEvent创建一个等价项。我不知道如何替换";解码器(解码器(";因为解码器已经在重写json组合子中变得抽象。尝试使用Decode.Decode失败。你知道如何解决这个问题吗?
let decodeEvent = (Decoder(decoder), value: Web_node.event) =>
try decoder(Obj.magic(value)) catch {
| ParseFail(e) => Error(e)
| _ => Error("Unknown JSON parsing error")
}
decodeEvent
的目的似乎有两个:
- 将
Web_node.event
转换为Json.t
以便在其上使用Json解码器 - 返回
result
,而不是在出现错误时引发异常
rescript-json-combinators
API已具有基于result
的API。这也是为什么该实现现在被隐藏并且需要使用Json.decode
来运行解码器的部分原因。这似乎就是这里所缺少的:
let decodeEvent = (decoder, value: Web_node.event) =>
value->Obj.magic->Json.decode(decoder)