Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: Runtime error while feeding a binary to stdin (Manuel) ---------------------------------------------------------------------- Message: 1 Date: Wed, 11 Jan 2017 08:27:51 -0500 From: Manuel <mva....@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Runtime error while feeding a binary to stdin Message-ID: <87mvexvi94....@pavla.com> Content-Type: text/plain; charset=utf-8 Theodore Lief Gannon <tan...@gmail.com> writes: Hi Theodore, Thanks, I didn't know about those functions. Best regards, Manuel. > Those System.IO functions *are* String-specific. Try the equivalents from > Data.ByteString: > > http://hackage.haskell.org/package/bytestring-0.10.8.1/docs/Data-ByteString.html#g:29 > > On Tue, Jan 10, 2017 at 2:46 PM, Manuel Vázquez Acosta <mva....@gmail.com> > wrote: > >> Hi all, >> >> I'm quite new to Haskell. While following the "Real World Haskell" and >> doing some experimentation I came up with a anoying situation: >> >> Trying to read data from stdin it seems that binary data is not >> allowed. A simple "copy" program: >> >> >> -- file: copy.hs >> import System.IO >> >> main = do >> input <- hGetContents stdin >> hPutStr input >> >> Fails when I run it like: >> >> $ ghc copy.hs >> $ ./copy < input > output >> copy: <stdin>: hGetContents: invalid argument (invalid byte sequence) >> >> input contains binary data. In fact of all the following programs only >> the first works with binary data: >> >> copy:: IO () >> copy = do >> bracket (openBinaryFile "input" ReadMode) hClose $ \hi -> do >> bracket (openBinaryFile "ouput" WriteMode) hClose $ \ho -> do >> input <- hGetContents hi >> hPutStr ho input >> >> >> copy2:: IO () >> copy2 = do >> -- Doesn't work with binary files >> source <- readFile "input" >> writeFile "output" source >> >> >> copy3:: IO () >> copy3 = do >> -- Doesn't work with binary files either >> interact (map $ \x -> x) >> >> >> copy4:: IO () >> copy4 = do >> input <- hGetContents stdin >> hPutStr stdout input >> >> >> But I lost any chance of piping and/or using '<', '>' in the shell. >> >> Best regards, >> Manuel. >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >> > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 103, Issue 6 *****************************************