
On 2004-11-16, Henning Thielemann
On 16 Nov 2004, Peter Simons wrote:
Yes and no. It can't be checked statically if the number of placeholders matches the number of arguments. It can't be checked statically if the types of placeholders match the types of arguments. It is not possible to create functions with more than one variable length parameter lists.
That's a particular problem, since this was one of the motivations for getting a printf out there. It makes a very nice way to produce nice column-aligned data from a variety of numeric and string sources, and provides a good deal of control over numeric output formats, too. If I encounter %07.3f, I can't just do a read on a string passed to me, hoping that I'd get a valid Double (or Rational or whatever). One of the annoying things is that show on a Rational produces a value that is incompatible with show on a Double, and the read functions for these two types can't understand each other's string formats. (Urg.)
and pass a function (String -> a) to vsnprintf which does the lookup. I'm not sure how having different types of values in the dictionary plays into this, though.
There is a function like that in the MissingH.Printf source, but it is not exported at present (rather it is used to support the association list and FiniteMap versions of this feature). It could easily be exported, though. -- John