1

Pipes ライブラリを多用する Haskell プログラムに取り組んでいます。ライブラリの一部をHasteに移植しています。私がつまずきにぶつかった場所の 1 つは、javascript がスリープ状態を処理する奇妙な方法です。

私が書きたかったのは、結果を送信する前に遅延する単純なパイプでした

sleeper :: Int -> Pipe a a IO ()
sleeper time = forever $ do
                   temp <- await
                   sleep time
                   yield temp

ただし、スリープはコールバックのように機能するようです。

setTimeout :: MonadIO m => Int -> IO () -> m ()

やってみた

sleeper time = do
                   temp <- await
                   yield temp
                   setTimeout time $ sleeper time

しかし、タイプは適切に並んでいません。遅延パイプを取得する方法はありますか?

4

1 に答える 1

1

あなたはhttps://github.com/imalsogreg/pipes-rt/blob/master/lib/Pipes/RealTime.hs#L127を見たいと思うかもしれません

于 2014-08-29T18:00:24.537 に答える