Haskell “打印”;"富",;当我按下回车键时,哈斯克尔

Haskell “打印”;"富",;当我按下回车键时,哈斯克尔,haskell,Haskell,首先,我想用Haskell编写一个程序,当我按下s键时开始打印我女朋友的名字,然后当我再次按下s键时停止打印。但我不明白如何编写这样一个程序 相反,我尝试编写一个程序(在Redditer同事的帮助下),当我按下enter键时,它会打印“foo”,但似乎“foo”不想打印。为什么呢 {-# language NumDecimals #-} module Main where import Control.Monad import Control.Concurrent (threadDelay)

首先,我想用Haskell编写一个程序,当我按下s键时开始打印我女朋友的名字,然后当我再次按下s键时停止打印。但我不明白如何编写这样一个程序

相反,我尝试编写一个程序(在Redditer同事的帮助下),当我按下enter键时,它会打印“foo”,但似乎“foo”不想打印。为什么呢

{-# language NumDecimals #-}
module Main where

import Control.Monad
import Control.Concurrent (threadDelay)
import Control.Concurrent.MVar
import Control.Concurrent.Async (concurrently_)

keyWatcher :: MVar () -> IO ()
keyWatcher latch = forever (do _ <- getLine
                               _ <- takeMVar latch
                               _ <- getLine
                               putMVar latch())

loop :: MVar () -> IO ()
loop latch = forever (do swapMVar latch ()
                         threadDelay 1e6
                         putStrLn "Marika Boo!!!")

main :: IO ()
main = do latch <- newMVar ()
          concurrently_ (loop latch) (keyWatcher latch)
{-#语言NumDecimals}
模块主要在哪里
进口管制
导入控制。并发(线程延迟)
导入控制.Concurrent.MVar
导入控制.Concurrent.Async(并发)
keyWatcher::MVar()->IO()

keyWatcher latch=forever(请勿发表评论,此对话已结束。@BhargavRao被移动的评论包括解释此问题为何属于“无法复制”的评论。为避免未来读者产生混淆,请。