std.compress

Daniel Murphy yebblies at nospamgmail.com
Tue Jun 11 15:34:56 PDT 2013


"Jakob Ovrum" <jakobovrum at gmail.com> wrote in message 
news:fjmuuahorgbwkcvygnqq at forum.dlang.org...
> On Tuesday, 11 June 2013 at 13:13:56 UTC, Daniel Murphy wrote:
>> Also, compress is a ridiculously general name for a function.
>
> We have module-level functions called "copy" (multiple), "read", "write", 
> "map", etc. already, and it's not a bad thing!
>

It is.

> It's OK because the full name is not "compress", but 
> "std.compression.lz77.compress". This way, how specific the code wants to 
> be depends on the user and the particular use-case, instead of 
> one-size-fits-all alternatives like "lz77Compress". There's no redundancy 
> in the name yet we still have the option to be pin-point specific (e.g. 
> static import), and yes, we still get to use UFCS!
>

There is a reason we don't call every function in phobos 'process' and let 
the module name tell us what is actually does - when you see the name in 
your source code, it is easy to recognize what is being done.

> To eliminate the UFCS problem - which doesn't happen very often (how often 
> do you want to use two different compression algorithms in the same 
> unit?), we can (must?) use renamed symbols when importing.
>

My workplace has a fire extinguisher, but this doesn't mean lighting fires 
is a good idea.

I know we have the tools to disambiguate, but they come at a syntax and/or 
clarity cost.  Why create a problem when we don't have to?

> Since any example using multiple "compress" functions would be contrived, 
> I'll use an existing conflict - the case of "copy".
>

Eg. Code which implements http compression with support for multiple 
algorithms.

tl;dr We have great tools to disambiguate when we have to.  Let's not have 
to. 




More information about the Digitalmars-d mailing list