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. Re: Runtime error while feeding a binary to stdin (Manuel)
----------------------------------------------------------------------
Message: 1
Date: Wed, 11 Jan 2017 08:27:51 -0500
From: Manuel <[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: <[email protected]>
Content-Type: text/plain; charset=utf-8
Theodore Lief Gannon <[email protected]> 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 <[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
>>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 103, Issue 6
*****************************************