3

最近、私はいくつかの JavaScript コードを Fay に移植することに決めました。これにより、型の正確性を保証し、きちんとした方法で非同期を処理できるように (また、実験することもできます)。並列 ajax 呼び出しを同期することだけを目的とした JavaScript オブジェクトをいくつか作成しました。私はHaskellを初めて使用します。

Fay では、いくつかの ajax 呼び出しを開始し、たとえばControl.Monad.Parallel.sequenceを使用してそれらを同期させたいと考えていました。ただし、 fay-jquery AJAX 関数は成功/失敗コールバックのモナドを返さず、fay スナップレットのこの例も返さないため、私は立ち往生しており、ガイダンスが切実に必要です。それらはすべて、レイジーな haskell 呼び出しを厳密な javascript ステートメントにシーケンス処理するためのように見える Fay () モナドを返します。 AJAX リクエストをオフにすると、2 つの異なるアクションが発生します。

これについて多くの質問があります:

  1. 継続モナドは私が探しているものですか?
  2. Fay で動作し、このモナドを非同期 JavaScript に使用するモジュールはありますか?
  3. fay-jquery の AJAX 関数の副作用は、返された Fay() の後にバインドまたはシーケンスされたものの後に発生するため、関数は不純になりますか?
  4. Fay リポジトリに継続モナドがあることに気付きました- Fay 自体で使用されていないのはなぜですか? 私が見つけることができる唯一のものは、 async node.js fs calls をラップするこの要点です。

回答をいただければ幸いです。彼らは、このことについての私の不安定な理解を大いに助けてくれるでしょう.

4

1 に答える 1

2
  1. はい。Cont の例は、基本的に、エラー処理なしで、必要なことを行います。
  2. ^
  3. それはあなたの「不純」の定義によります。すべての効果が実行される前に戻る関数は、まだ純粋である可能性があると思います。これは、Haskell のほとんどすべての遅延計算に当てはまります。たとえば、Haskell's を参照してくださいforkIO :: IO () -> IO ThreadId
  4. 「Fay自体で」とはどういう意味かわかりません。Prelude でこれを利用するべきではないと思いますが、他のライブラリで Cont を使用することもできます。必要に応じて、例から自由にパッケージを作成してください。
于 2014-09-08T08:06:46.943 に答える