import System.Environment import Data.Conduit import qualified Data.Conduit.Text as CT import qualified Data.Conduit.Binary as CB import Control.Monad.Trans.Resource import qualified Data.Text as T import Control.Monad.IO.Class (MonadIO)
searchSink :: (Monad m, MonadIO m) => T.Text -> Sink T.Text m Bool searchSink w = do n <- await return $ case n of Nothing -> False Just s -> T.isInfixOf w s
main :: IO () main = do (file:word:_) <- getArgs x <- runResourceT $ CB.sourceFile file $= CT.decode CT.utf8 $$ searchSink (T.pack word) print x