
On 2004-11-16, Jon Fairbairn
On 2004-11-16 at 11:42+0100 Peter Simons wrote:
I'm not sure, though, whether this is the case here, because vsnprintf in Haskell still is type-safe.
Not statically, though, surely?
vsprintf "%d, your age is %s\n" "John" (10::Integer)
is type incorrect, but won't be reported at compile time. At least I can't see how it could be, given that the string can't be dissected at compile time.
You are correct. One of the drawbacks of doing this in pure Haskell is that you lose compile-time type checking. The above code will throw an exception at runtime. Ian Lynagh's Template Haskell-based Printf doesn't suffer from that problem, since it can generate the appropriate Haskell code at compile time. On the other hand, it is less portable. So not all printf implementations for Haskell have this problem. So, people have an option. That's my intent. -- John