7

runhaskell Toy.hsで実行すると出力が生成されず、代わりに無期限にハングする次のプログラムがあります。私の理解では、プログラムは「hi」を出力して終了する必要があります。このような問題をデバッグする方法についての回答やアドバイスをいただければ幸いです。github から Pipes 4.0.0 を使用しています ( github.com/Gabriel439/Haskell-Pipes-Library )。

module Toy where

import Pipes
import Control.Monad.State

type Request = String
type Response = String

serveChoice :: Request -> Server Request Response IO ()
serveChoice = forever go
  where go req = do
        lift $ putStrLn req
        respond req

run :: Monad m => () -> Client Request Response (StateT Int m) ()
run () = do
    request "hi"
    return ()

main :: IO ()
main = evalStateT (runEffect $ hoist lift . serveChoice >-> run $ ()) 0
4

1 に答える 1