haskell-jp / beginners #24 at 2023-09-29 11:44:45 +0900

質問失礼します。
チュートリアルとして、.txtファイルの簡単な読み込みをしながら機械的な応答をするチャットサーバーを作りました。
立てたあといつでも応答則の変更ができるように、メッセージが来たらFileIOで読みこんで、それに基づいて何かメッセージを返すようなことをしています。すると、定期的に以下のエラーが出て落ちます。

data: end of file
Main: file descriptor 45546384 out of range for select (0--1024).
Recompile with -threaded to work around this.

コンパイル方法で解決する問題でしょうか?ご教示いただければ幸いです。

{package.yaml}
ghc-options:
- -Wall
- -Wcompat
- -Widentities
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wmissing-export-lists
- -Wmissing-home-modules
- -Wpartial-fields
- -Wredundant-constraints
- -threaded

ファイル読み込み部のコードは以下で、調べつつ手探りで行ったものなのでかなり怪しい気もします。
readWordGroup :: FilePath -> IO [Text]
readWordGroup filePath = bracket
  (openFile filePath ReadMode)  
  hClose  
  (\h -> T.words <$> TIO.hGetContents h) 

よろしくお願いします。
TIO でしょうか?ぱっと見で怪しいのはそこですね。そうだとすると、 を代わりに使えば解決すると思います。
あるいは、もっと単純に
import qualified Data.Text as T
import qualified  as TIO

readWordGroup = fmap T.words . TIO.readFile

と書き換えるか
ありがとうございます!試してみます