Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Haskell Fay序列异步调用_Javascript_Haskell_Asynchronous_Monads_Fay - Fatal编程技术网

Javascript Haskell Fay序列异步调用

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语句中

最近,我决定将一些javascript代码移植到Fay,这样我就可以保证类型的正确性,并以一种简洁的方式处理异步(也可以进行实验)。我构建了几个javascript对象,它们的唯一目的是同步并行ajax调用。我对哈斯克尔很陌生

在Fay中,我希望发出一些ajax调用,并使用(比如)使它们同步。然而,我陷入了困境,迫切需要指导,因为成功/失败回调不会返回monad,也不会返回monad。它们都返回一个Fay()monad,它似乎是为了将懒惰的haskell调用排序到严格的javascript语句中,而我期望的是一个元组(Fay(),IO(SuccessResult FailureResult)),因为触发AJAX请求会导致两个不同的操作

我对此有很多问题:

  • 这是我要找的单子吗
  • 是否有任何模块与Fay一起工作,并将此monad用于异步javascript
  • 由于的副作用发生在返回的Fay()之后绑定或排序的任何内容之后,这是否会导致函数不纯
  • 我注意到一个——为什么它不在费伊身上使用?我唯一能找到的就是
  • 答案将不胜感激!它们将极大地帮助我对这些东西的不稳定理解

  • 对。Cont示例基本上实现了您想要的功能,即无错误处理
  • ^
  • 这取决于你对“不纯”的定义。我要说的是,一个函数在其所有效果都被执行之前返回,它仍然可以是纯函数。Haskell中几乎所有懒惰的计算都是这样。例如,请参见Haskell的
    forkIO::IO()->IO线程ID
  • 我不知道你说的“费伊本身”是什么意思。我不认为Prelude应该使用这个函数,但是其他库可以使用Cont,如果您想使用这个函数,请随意使用这个例子制作一个包

  • 谢谢你的回答。我一直在研究自己,我已经确定扩展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拍一张照片。我刚刚注意到你是费伊的合著者!非常令人印象深刻,谢谢!