最近,我决定将一些 javascript 代码移植到 Fay,这样我就可以保证类型的正确性,并且我可以以一种简洁的方式处理异步(也可以进行实验)。我构建了一些 javascript 对象,其唯一目的是同步并行 ajax 调用。我对 Haskell 很陌生。
在 Fay 中,我希望触发一些 ajax 调用,并使用Control.Monad.Parallel.sequence来使它们同步。但是,我被困住并且迫切需要指导,因为fay-jquery AJAX 函数不会返回成功/失败回调的 monad,而fay snaplet 中的这个示例也没有。它们都返回一个 Fay () monad,它似乎只是为了将惰性 haskell 调用排序到严格的 javascript 语句中,而我有点期待像 (Fay (), IO (Either SuccessResult FailureResult)) 的元组,因为触发关闭 AJAX 请求会导致两种不同的操作。
我对此有很多疑问:
- 延续单子是我要找的吗?
- 是否有任何模块可以与 Fay 一起使用,并将这个 monad 用于异步 javascript?
- 由于fay-jquery 的 AJAX 函数的副作用发生在返回的 Fay() 之后绑定或排序的任何内容之后,这是否会使函数不纯?
- 我注意到Fay repo 中有一个 continuation monad - 为什么 Fay 本身没有使用它?我唯一能找到的是这个包含异步 node.js fs 调用的要点。
答案将不胜感激!他们会极大地帮助我对这些东西的不稳定理解。