私はTwitchライブラリをいじっています:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Twitch
import Data.Default
import Turtle.Prelude
import RIO
main :: IO ()
main = do
print "hi"
let p = "C:\\Users\\unicorn\\programming\\listenerDir"
print "before"
liftIO $ runWithConfig p ((\c -> c {dirs=[p]}) def) $ do -- marked
"*.csv" |> \f -> print f -- marked
print "here"
return ()
上記のプログラムをコンパイルして実行するとliftIO ...
(マークされた行を除外して)呼び出しなしで実行すると、正常に実行され、メッセージが出力されます。(しかし、明らかに、ファイル リスナは登録も実行もされていないため、望ましい結果ではありません。)
ただし、コンパイルしてそのまま実行すると、印刷hi
やbefore
. なぜここに当てはまるのですか?
ライブラリの例に従おうとしましたが、なぜハングするのかわかりません。
アップデート:
どうやらそれは私がdef構成のために行っているdirsの置換と関係があります
アップデート:
また、次の方法で試しました。
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Twitch
import Data.Default
import Turtle.Prelude
import RIO
import System.IO.Unsafe
import System.FilePath.Windows
main :: IO ()
main = do
let p = "C:\\" </> "Users" </> "unicorn" </> "programming" </> "simpleUID" </> "lib_app_setup" </> "kofax-valet" </> "testingDir"
ops = Options LogToStdout Nothing (Just p) False DebounceDefault 0 300 False
print "starting"
print p
defaultMainWithOptions ops $ do
"*.csv" > \f -> print f
同じ結果で
ソースでそれを調べると、defaultMainWithOptions
stdout にも出力されます。しかし、それも起こりません...
fyi: reddit でこの質問をしましたが、回答が得られなかったので、ライブラリに慣れていないだけでなく、より大きな問題を疑ったため、ここに投稿しました
更新:cabal run
これは2 番目のコード
の完全な出力です。
unicorn@LAPTOP ~/programming/haskell/listenerTest
$ cabal run
Build profile: -w ghc-8.10.1 -O1
In order, the following will be built (use -v for more details):
- listenerTest-0.1.0.0 (exe:listenerTest) (file Main.hs changed)
Preprocessing executable 'listenerTest' for listenerTest-0.1.0.0..
Building executable 'listenerTest' for listenerTest-0.1.0.0..
[1 of 1] Compiling Main
( Main.hs, C:\Users\unicorn\programming\haskell\listenerTest\dist-newstyle
\build\x86_64-windows\ghc-8.10.1\listenerTest-0.1.0.0\x\listenerTest\build
\listenerTest\listenerTest-tmp\Main.o )
Linking C:\Users\unicorn\programming\haskell\listenerTest\dist-newstyle\build
\x86_64-windows\ghc-8.10.1\listenerTest-0.1.0.0\x\listenerTest\build
\listenerTest\listenerTest.exe ...
unicorn@LAPTOP ~/programming/haskell/listenerTest
$
その後、Ctrl + cを押してタスクを強制終了する必要がありました