Javascript Haskell Fay序列异步调用
最近,我决定将一些javascript代码移植到Fay,这样我就可以保证类型的正确性,并以一种简洁的方式处理异步(也可以进行实验)。我构建了几个javascript对象,它们的唯一目的是同步并行ajax调用。我对哈斯克尔很陌生 在Fay中,我希望发出一些ajax调用,并使用(比如)使它们同步。然而,我陷入了困境,迫切需要指导,因为成功/失败回调不会返回monad,也不会返回monad。它们都返回一个Fay()monad,它似乎是为了将懒惰的haskell调用排序到严格的javascript语句中,而我期望的是一个元组(Fay(),IO(SuccessResult FailureResult)),因为触发AJAX请求会导致两个不同的操作 我对此有很多问题:Javascript Haskell Fay序列异步调用,javascript,haskell,asynchronous,monads,fay,Javascript,Haskell,Asynchronous,Monads,Fay,最近,我决定将一些javascript代码移植到Fay,这样我就可以保证类型的正确性,并以一种简洁的方式处理异步(也可以进行实验)。我构建了几个javascript对象,它们的唯一目的是同步并行ajax调用。我对哈斯克尔很陌生 在Fay中,我希望发出一些ajax调用,并使用(比如)使它们同步。然而,我陷入了困境,迫切需要指导,因为成功/失败回调不会返回monad,也不会返回monad。它们都返回一个Fay()monad,它似乎是为了将懒惰的haskell调用排序到严格的javascript语句中
forkIO::IO()->IO线程ID
谢谢你的回答。我一直在研究自己,我已经确定扩展Cont示例确实是我想要的。这个例子是必要的,因为Control.Monad.Cont依赖于Fay不支持的TypeClass。当然,对于具有副作用的函数来说,它必须返回这些副作用的表示。例如,
forkIO
将立即返回类型为iothreadid
的内容,这表示将来某个时间创建线程的副作用。由于将函数绑定到fay monad只意味着该函数在生成fay monad的函数之后立即执行,因此,fay
monad肯定不代表AJAX调用成功或失败的副作用,因此,AJAX调用必须是不纯的。4是一个很好的观点——Fay本身作为Haskell-to-JS编译器对延续monad没有任何用处。然而,我想知道这是否对于弥补Javascript回调和Haskell使用Monad处理异步之间的差距非常有用。就我个人而言,我调查费伊的部分动机是想看看我是否可以使用monads以更干净的方式同步异步调用。我还将给GHCJS拍一张照片。我刚刚注意到你是费伊的合著者!非常令人印象深刻,谢谢!