> Martin Norbäck <[EMAIL PROTECTED]> wrote:
> > I agree that i18n needs positional arguments.
> > What's wrong with simply doing like this:
> > 
> > printf "I have %. %. %.."    ["trained", show 1, "Jedi"]
> > printf "%2. %3. %1. I have." ["trained", show 1, "Jedi"]
> 
> Nothing is exceptionally wrong with it, except it's not
> as flexible. Since everything is show'n, how would you
> handle things like "%5.2f" or "%*d"? In Brian Huffman's
> version it's almost trivial to add. I know I can use 
> formatDouble and whatnot, but the code looks cluttered
> this way. "C" printf has many pitfalls, but I like its
> terseness.

Just thought I would jump in and say that, unlike (it seems) everyone else, I 
hate printf in C. It is a horrible horrible inextensible hack of a function 
that I find extremely awkward to use.

In the C version, it is completely hardcoded and inextensible. Even in the 
version presented on this list, one can't add new ways to format an existing 
datatype.

I personally much prefer the syntax currently used in Haskell, which is also 
essentially what is used in most other recent languages, including Java, C++, 
and (god help me) Perl.

In the example given, I could write:

"I have " ++ action ++ " " ++ number ++ " " ++ whatas
where
    action = "trained"
    number = show 1
    whatas = "Jedi"

Which is IMHO rather more readable than a load of weird control codes hidden 
in a text string that one then has to match against a list.

+ If I want to use a weird formatting approach, I just write my own function, 
and use it instead of "show". No need to faff around extending someone else's 
printf.

[end rant]


-Rob





_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to