Haskell で基本的な GUI を学ぶために、単純な画像ダウンローダーを作成しています。ダウンロード中にファイル名を表示する staticText ボックスがあります。
私が抱えている問題は、この小さな再帰関数にあります。
saveImgs :: [String] -> IO ()
saveImgs [] = return ()
saveImgs (x:xs) = do
let filename = tail $ x =~ "/[^/]*$"
logMessage x
maybeWrite filename =<< (simpleHttp x) `X.catch` statusExceptionHandler
saveImgs xs
where maybeWrite f b | b == L.empty = return ()
| otherwise = L.writeFile f b
保存する画像の URL のリストを取得し、textCtrl ウィジェットを更新します。ただし、すべてが完了した後、テキストを一度だけ更新します。テキストボックスのテキストを手動で更新する方法はありますか?
更新: タイマーを追加して開始しようとしましたが、何もしません。
timerClk <- timer f [on command := windowRefresh logBox False]