Sean - thanks very much! That helps a lot. 

haskell-libs was a misspelling of the libraries@haskell.org list, which I've taken the liberty of cc'ing once again. It's on gmane.org too.

Best,
-Simon

On Aug 20, 2010, at 3:36 AM, Sean Leather wrote:
Ha! :) Yes, I was "asking for it," wasn't I? And you're absolutely right. I gave examples in the announcement email when I asked for feedback, but I didn't include any in the documentation. I will fix that.

I found out more at http://github.com/spl/xformat/tree/master/tests/ . What I was hoping for was a way to do printf, without the variable arguments which make reuse troublesome, but still using standard printf format strings. Does this lib do that ?

Hmm. Let me see if I can try to answer that question.

Here's a basic example:

*Text.XFormat.Show> showf ("Hello " % String % " #" % Num % "!") "World" 1
"Hello World #1!"

As you can see, this does not use the "standard printf format string." Instead, it uses a type-indexed function 'showf' to produce a new function 'showf ("Hello " % String % " #" % Num % "!")' that allows only certain types for arguments. To help see this, here is that type:

*Text.XFormat.Show> :t showf ("Hello " % String % " #" % Num % "!")
showf ("Hello " % String % " #" % Num % "!") :: (Num a) => String -> a -> String

Thus, we have a type-safe printf.

One option that I have considered is writing a quasiquoter to allow you to do standard printf format strings, but I haven't found a round tuit for that, yet.

Hope this answers your question. Thanks for bringing this up. xformat needs some TLC after a long time. I just didn't know how it would be used and what direction to take it in.

BTW, what is haskell-libs@haskell.org ? I've never seen that before.

Regards,
Sean