
On 16 Nov 2004, Peter Simons wrote:
I'm not sure, though, whether this is the case here, because vsnprintf in Haskell still is type-safe. You'll get more complicated error messages, the memory footprint might be worse, but it still _is_ robust code.
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.
Dear ${customer},
are you interested in making ${phantasy-number} fast?
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.
The function MissingH.Printf.sprintf is probably the better choice, but one could even replace [Value] by [String]. The conversion from any type to String can be easily done using 'show' by the caller. Though it gives the author of the format string less control over the formatting of particular types like numbers.