2014-08-29 28 views
1

我正在使用大量使用Pipes庫的Haskell程序。我將庫的一部分移植到Haste。我碰到了一個絆腳石的那個地方是JavaScript處理睡眠的奇怪方式。在Haste和Haskell中用管道睡覺

我想寫是一個簡單的管道發送其結果

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 

但類型不正確排隊。有沒有辦法得到延遲管道?

+3

您可以通過等待其獲取通過回調另一個線程填充的無功效仿睡覺。 – 2014-08-29 15:54:57

+1

你是否真的想在JavaScript環境中入睡?我對Haste並不熟悉,但如果它不使用WebWorker,則會凍結您的環境。 – Zeta 2014-08-30 00:35:18

回答