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. Runtime error while feeding a binary to stdin (Manuel Vázquez Acosta) 2. Re: Runtime error while feeding a binary to stdin (Theodore Lief Gannon) ---------------------------------------------------------------------- Message: 1 Date: Tue, 10 Jan 2017 17:46:23 -0500 From: Manuel Vázquez Acosta <mva....@gmail.com> To: beginners@haskell.org Subject: [Haskell-beginners] Runtime error while feeding a binary to stdin Message-ID: <87r34acz40....@pavla.com> Content-Type: text/plain 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. ------------------------------ Message: 2 Date: Tue, 10 Jan 2017 18:30:36 -0800 From: Theodore Lief Gannon <tan...@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: <CAJoPsuABv57HW=rqt07lck0iiyq5puxv-c5lu00qq5ljbzt...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170110/d1973054/attachment-0001.html> ------------------------------ 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 5 *****************************************