
In this case you have to use parens -- two dollar signs, like this B.intercalate $ B.intercalate ByteString [ByteString] $ [ByteString] would also not type check -- it is exactly equivalent to your first example: B.intercalate (B.intercalate ByteString [ByteString] ([ByteString])) just with one level of extra parentheses. If for some reason you absolutely need to avoid parentheses (mostly as a thought exercise, I guess), you'd have to have a flipped version of intercalate: flippedIntercalate :: [ByteString] -> ByteString -> ByteString flippedIntercalate = flip B.intercalate flippedIntercalate [ByteString] $ B.intercalate ByteString [ByteString] of course, this is pretty contrived. -Ross On Jan 5, 2009, at 1:23 PM, Galchin, Vasili wrote:
yep ... that is exactly what I meant!! so can I use more $'s or must I use parens (as you did) to disambiguate?
Vasili
On Mon, Jan 5, 2009 at 12:18 PM, Ross Mellgren
wrote: Did you mean: B.intercalate (B.intercalate ByteString [ByteString]) [ByteString]
($) applies all the way to the right, so you were giving the inner intercalate two lists of ByteString.
-Ross
On Jan 5, 2009, at 1:17 PM, Galchin, Vasili wrote:
Hi Max,
That is what should happen .... The inner B.intercalate will produce the ByteString to be used by the B.intercalate. ??
Vasili
On Mon, Jan 5, 2009 at 12:13 PM, Max Rabkin
wrote: 2009/1/5 Galchin, Vasili : Hello,
I have the following:
B.intercalate $ B.intercalate ByteString [ByteString] [ByteString]
I get a type error with this. If I comment out the 2nd B.intercalate and the third parameter I get no type errors.
B.intercalate needs a ByteString and a list of ByteStrings. Two B.intercalates need two ByteStrings and two lists of ByteStrings.
--Max
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe