Send Beginners mailing list submissions to
[email protected]
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
[email protected]
You can reach the person managing the list at
[email protected]
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 <[email protected]>
To: [email protected]
Subject: [Haskell-beginners] Runtime error while feeding a binary to
stdin
Message-ID: <[email protected]>
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 <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
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 <[email protected]>
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
> [email protected]
> 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
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 103, Issue 5
*****************************************