Hi Luke,

        join :: ByteString -> [ByteString] -> ByteString ???

Vasili

On Sat, Dec 27, 2008 at 1:58 AM, Luke Palmer <lrpalmer@gmail.com> wrote:
2008/12/26 Galchin, Vasili <vigalchin@gmail.com>

Hello,      

      I have a ByteString -> [ByteString] -> ByteString situation, i.e. concatenation .....


                  -- marshall into ByteString representation
                   join
                      (encode (buildHeader ss))                             -- ByteString
                      (map encode (buildEntries (sequenceListExtract ss)))  -- [ByteString]
 

I get the following typecheck error which is vexing me ....

    Couldn't match expected type `t -> t -> B.ByteString'
           against inferred type `B.ByteString'

???

join is not a function in Data.ByteString.  By the error I'm guessing you're getting the join from Control.Monad, instantiated to (->).

You are looking for "concat"; i.e.

                   concat $ 

                      encode (buildHeader ss) :                             -- ByteString
                      map encode (buildEntries (sequenceListExtract ss))  -- [ByteString]

(Control.Monad.join does end up meaning"concat" when working on lists of lists, but it does not generalize to lists of other things).

Luke