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"