Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/HASKELL/Tac1.hs.html -- http://angg.twu.net/HASKELL/Tac1.hs -- (find-angg "HASKELL/Tac1.hs") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Pipe a string through "tac". -- "main0" was based on this, -- https://lotz84.github.io/haskellbyexample/ex/spawning-processes -- but with this fix: -- (find-fline "~/LOGS/2022oct08.haskell" "<probie> after `hPutStr`") -- -- See: (find-es "haskell" "pipeThrough") -- (find-es "haskell" "System.Process") -- (find-fline "~/LOGS/2022oct08.haskell" "that I should close its stdout too") -- -- (defun e () (interactive) (find-angg "HASKELL/Tac1.hs")) import System.IO import System.Process main0 = do (_, Just hout, _, _) <- createProcess (proc "date" []) { std_out = CreatePipe } dateOut <- hGetContents hout putStrLn "> date" putStrLn dateOut (Just hin, Just hout, _, _) <- createProcess (proc "grep" ["hello"]) { std_in = CreatePipe, std_out = CreatePipe } hPutStr hin "hello grep\ngoodbye grep" hClose hin grepBytes <- hGetContents hout putStrLn "> grep hello" putStrLn grepBytes (_, Just hout, _, _) <- createProcess (proc "bash" ["-c", "ls -a -l -h"]){ std_out = CreatePipe } lsOut <- hGetContents hout putStrLn "> ls -a -l -h" putStrLn lsOut main1 = do (Just hin, Just hout, _, _) <- createProcess (proc "tac" []) { std_in = CreatePipe, std_out = CreatePipe } hPutStr hin "a\nbb\nccc\ndddd\n" hClose hin strout <- hGetContents hout putStrLn strout pipeThrough p str_in = do (Just hin, Just hout, _, _) <- createProcess p { std_in = CreatePipe, std_out = CreatePipe } hPutStr hin str_in hClose hin hGetContents hout main2 = do strout <- pipeThrough (proc "tac" []) "a\nbb\nccc\ndddd\n" putStr strout -- main = main0 -- main = main1 main = main2 {- * (eepitch-ghci) * (eepitch-kill) * (eepitch-ghci) :load Tac1.hs :main :t (proc "tac" []) pipeThrough (proc "tac" []) "a\nbb\nccc\ndddd\n" * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) runghc Tac1.hs -} -- Local Variables: -- coding: utf-8-unix -- End: