liveinwood
conduit の勉強をしていて詰まってしまったので質問させてください。
words.txt から 「apple」 以外の単語を出力させる意図で、下のようなコードを書いたのですが、
実行してみると 「apple」以外の単語も除外されてしまっているようです。
文字列型の扱いが間違っていそうな気がするのですが、原因がわからず。解決方法を教えていただけますでしょうか。
words.txt の中身は https://github.com/tabatkins/wordle-list/blob/main/words です。
実行結果
words.txt から 「apple」 以外の単語を出力させる意図で、下のようなコードを書いたのですが、
実行してみると 「apple」以外の単語も除外されてしまっているようです。
文字列型の扱いが間違っていそうな気がするのですが、原因がわからず。解決方法を教えていただけますでしょうか。
words.txt の中身は https://github.com/tabatkins/wordle-list/blob/main/words です。
module Main where
import Conduit
import Data.Conduit.Binary as CB
import Data.ByteString (ByteString)
import Data.ByteString.UTF8 (toString)
main :: IO ()
main = do
res <- runConduitRes $ pipeline "./words.txt"
Prelude.mapM_ print res
producer :: MonadResource m => FilePath -> ConduitT i ByteString m ()
producer file = sourceFile file .| CB.lines
string :: Monad m => ConduitT ByteString String m ()
string = mapC toString
filtering :: Monad m => ConduitT String o m ()
filtering = dropWhileC ( == "apple")
-- filtering = dropWhileC (const True)
pipeline :: MonadResource m => FilePath -> ConduitT i o m [String]
pipeline file = producer file .| string .| (filtering >> sinkList)実行結果
$ stack run | grep "apple" "apple"