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:  How to get IO String from Network.Socket.ByteString.recv
      method (Steven Leiva)


----------------------------------------------------------------------

Message: 1
Date: Tue, 5 Jun 2018 14:05:00 -0500
From: Steven Leiva <leiva.ste...@gmail.com>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Cc: Dinesh Amerasekara <ddines...@yahoo.com>
Subject: Re: [Haskell-beginners] How to get IO String from
        Network.Socket.ByteString.recv method
Message-ID:
        <CA+=woS43kj_=kpc6b1szxjdjawbfqnzkfxmbgrfrqghxm-u...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

A bit late to the party, but to build on the previous answer, you're going
to run into the same problem with the Text data type, which has both a lazy
variant and a strict (?) variant.

The functions to convert from/to the strict/lazy variant are usually in the
lazy module:

*Data.Text.Lazy.toStrict* and *Data.Text.Lazy.fromStrict*.

*Data.ByteString.Lazy.toStrict* and *Data.ByteString.Lazy.toStrict*.

It's a common use-case to want to save the Text / ByteString to a file, and
in those cases you can find helper functions such as
*Data.ByteString.Lazy.writeFile*.



On Sun, May 20, 2018 at 6:56 PM, Daniel Bergey <ber...@teallabs.org> wrote:

> Network.Socket.ByteString.recv uses the strict ByteString from
> Data.ByteString, not the lazy one from Data.ByteString.Lazy.  So you
> want the `unpack` from Data.ByteString.Char8, rather than
> Data.ByteString.Lazy.Char8.
>
> I never remember which functions return strict or lazy ByteString.  I
> find the easiest way to check is to open the online docs and see where
> the `ByteString` link points:
>
> https://hackage.haskell.org/package/network-2.7.0.0/docs/
> Network-Socket-ByteString.html#v:recv
>
> points to:
>
> https://hackage.haskell.org/package/bytestring-0.10.8.2/
> docs/Data-ByteString.html#t:ByteString
>
> hope this helps,
> bergey
>
> On 2018-05-20 at 07:52, Dinesh Amerasekara <ddines...@yahoo.com> wrote:
> > Hi,
> >
> > I am unable to compile the below code.
> >
> > import Network.Socket hiding(recv)
> > import Network.Socket.ByteString as S (recv)
> > import qualified Data.ByteString.Lazy.Char8 as Char8
> >
> > getMessage :: Socket -> IO String
> > getMessage sock =  Char8.unpack <$> S.recv sock 8888
> >
> > It gives the below error.
> >
> > Couldn't match type ‘Data.ByteString.Internal.ByteString’
> >                      with ‘ByteString’
> > NB: ‘ByteString’ is defined in ‘Data.ByteString.Lazy.Internal’
> >     ‘Data.ByteString.Internal.ByteString’
> >         is defined in ‘Data.ByteString.Internal’
> >     Expected type: IO ByteString
> >     Actual type: IO Data.ByteString.Internal.ByteString
> >
> > In the second argument of ‘(<$>)’, namely ‘recv sock 8888’
> > In the expression: unpack <$> recv sock 8888
> > In an equation for ‘getMsg’:
> >       getMsg sock = unpack <$> recv sock 8888
> >
> > Can somebody tell me how I can return the IO String using
> > Network.Socket.ByteString.recv?
> >
> > Best Regards,
> > Dinesh.
> >
> > _______________________________________________
> > 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
>



-- 
Steven Leiva
305.528.6038
leiva.ste...@gmail.com
http://www.linkedin.com/in/stevenleiva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180605/b19da434/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 120, Issue 4
*****************************************

Reply via email to