On 2011-06-22 04:47, Lars T. Kyllingstad wrote: > On Tue, 21 Jun 2011 23:30:49 -0700, Walter Bright wrote: > > On 6/21/2011 10:38 PM, Jonathan M Davis wrote: > >> For example, should we have > >> > >>>> std.ascii.toLower and std.uni.toLower or std.ascii.toAsciiLower and > >>>> std.uni.toUniLower? > > > > I think we've failed if we have to name things std.ascii.toAsciiLower, > > i.e. having to repeat the module name in the function name in order to > > disambiguate it. > > One problem: std.uni only contains functions for dealing with upper/ > lower case and for checking whether something is an alpha character. If > you want the other functions, such as isDigit(), isPunctuation(), etc. > you still have to import std.ascii. And once you have imported both > std.uni and std.ascii, you are forced to disambiguate every time you call > a function which exists in both.
If it's a question of only generally a needing few functions, then static imports or explicit imports should solve the problem of that causing conflicts for all of the rest. static import std.ascii; import std.ascii : isDigit; It's more of an issue when you have a _lot_ of functions that you want to intermix (like might happen with std.algorithm and std.parallel_algorithm). But it is true that dealing with that could get annoying. > Would it make sense to move or add isDigit and so on to std.uni? Would > Unicode-aware versions of these functions be different from the ASCII > versions? Yes. Look at Arabic Digits, Arabic-Indic Digits, and European Digits here: http://unicode.org/glossary/ . It looks like the term digit in unicode is restricted to either 0 - 9 or variations on them rather than anything that might be considered a number (those would be considered numerals it seems: http://en.wikipedia.org/wiki/Unicode_numerals ), but in at least some circumstances, digits in unicode are more than just 0 - 9. I believe that you'd have to do something like isEuropeanDigit to unambiguously mean 0 - 9 in unicode. I expect that isHexDigit and isOctalDigit would be unambigously the same in ascii and unicode but not isDigit. - Jonathan M Davis