使用Haskell监视文件系统

Dan*_*ter 15 filesystems haskell

我正在使用FSNotify包来监视我的文件系统以更改markdown文件,因此我可以自动通过Pandoc运行它们.但是,我很难让经理退出.

按照目前的情况,我的代码基于Yesod使用相同的包:

module Main where

import System.FSNotify
import Filesystem (getWorkingDirectory)
import System.Exit
import Control.Concurrent

main = do
    cwd <- getWorkingDirectory
    putStrLn "Watching current directory, press RETURN to exit."
    withManager $ \man -> do
        _ <- forkIO $ do
            watchTree man cwd (const True) $ \fp -> print fp
        _ <- getLine
        exitSuccess
Run Code Online (Sandbox Code Playgroud)

当我使用时runhaskell,程序运行完美,但如果我将其编译为可执行文件(使用ghc --make),当我按回车键时,我的终端变得没有响应.我正在Windows 7 64位上编译它.

编辑:完成的代码.好吧,还没有完全完成 - 还有更多我想做的事 - 但是工作.

Mat*_*hid 24

每当我看到"在GHCi中工作,在编译时挂起"这一形式的问题时,我认为"你需要线程运行时".

尝试重新编译,-threaded看看是否有帮助.

(GHCi是用这个标志编译的,这解释了它的区别.我记得外部函数调用的工作方式有所不同,这取决于你是否使用线程运行时......)

  • 谢谢,工作就像一个魅力 - 一旦我意识到GHC没有重建我的可执行文件,因为我没有更改源文件,只是编译器标志:P. (2认同)