[Haskell-cafe] Re: Pure Haskell Printf

Jan-Willem Maessen Janwillem.Maessen at Sun.COM
Wed Nov 17 11:38:53 EST 2004

Scott Turner wrote:

>On 2004 November 16 Tuesday 06:42, Jérémy Bobbio wrote:
>>There is a probleme with ShowS though: it is not internationalizable at
>>all.  Strings like printf's or with any kind of variable substitution is
>>required for proper internationalization / localization.
>Printf is not adequate for internationalization either, because word (and thus 
>parameter) ordering may vary among languages.  Note that MissingH.Printf 
>addresses this with a feature which supports keys in format items, e.g. 
This is what it boils down to for me.  A post by Malcolm Wallace to one 
of the Haskell lists a few years back convinced me that:

Internationalization is a killer application for printf-style 
format-string-based functions.

I have seen approximately 32767 different proposals for printf with 
strong static typechecking, using anything from specialized data types 
to depedently-typed functions to compile-time reflection.

None of these appears to be able to solve the simple problem of allowing 
localization (or general fiddling with the formatting) without 
recompiling and relinking.  In that respect there will always be a place 
for dynamically-checked printf, and John's library really seems to be 
doing The Right Thing.

I remain much more skeptical that there's a need for a 
statically-checked printf which uses format strings.  ShowS and related 
approaches work pretty well in my experience (though it'd be nice to see 
standardized support for flexible number formatting).

A Challenge To The Type System Hackers: Is there a way to get the best 
of both worlds?  To do static checking on format strings when they're 
available, but fall back to dynamic checking when they are not?  Perhaps 
we provide a canonical format string, or use some other sort of hackery, 
and then check the actual string dynamically.

-Jan-Willem Maessen

More information about the Haskell-Cafe mailing list