<HTML><BODY>We already have bound-id-table-iterate-first, module-identifier-mapping-for-each and so on.<br>They are too long. And completion in DrRacket doesn't help a lot, because it gives all in documentation, not all in require (why?).<br><br>Idiomatic names good when there are only one implementation of every thing. But take, for example, FFI to .Net, Gtk ,Qt: we will have gtk-list, gtk-list-length, gtk-list-first, qt-list, dotnet-list, .... Then for QuickTime will have QT-... to distinct QT-video from qt-video. And if we have two implementation of GTK FFI (one through g-object-introspection and one native), then we will have to make gtk-gi-list and gtk-native-list and so on.<br><br>> With the level of  third-party reuse that I and my consulting clients have been doing over the last 10 years with Racket, I found that we only rarely use <br>"prefix-in"<br><br>Only because Racket is still young. For Common Lisp name clash is very common.<br><br>And even in Racket: <br>`->' is both in ffi and contract<br>`array' in math and ffi<br>`extract-desired-headers' in nntp and pop3<br>`set' in racket/control and racket/set<br><br>So may be better to propose prefix-in as the main usage mode. When package is not designed for prefix-in one has double prefix:<br>For example, set is in racket/control and racket/set. But with prefix-in one has set:set-eqv?, set:weak-set and even <strong>set:gen:set</strong> and <strong>set:list->set</strong> -- it is awful.<br><br>In my packages I only try not to interfere with base racket bindings. And make names concise (no prefixes). Because we have prefix-in, but don't have prefix-remove.<br><br>Sun, 06 Jul 2014 23:10:21 -0400 от Neil Van Dyke <neil@neilvandyke.org>:<br>
<blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        <div id="">
        



    









        
        


        
        
        
        
        

        
        

        
        



<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
                        <div id="style_14047026310000000601_BODY"><br>
Roman Klochkov wrote at 07/06/2014 10:15 PM:<br>
> What about 3rd party modules?<br>
><br>
> For example, should <br>
> <a href="http://planet.racket-lang.org/package-source/dherman/syntactic-closures.plt/1/0/syntactic-closures.ss" target="_blank">http://planet.racket-lang.org/package-source/dherman/syntactic-closures.plt/1/0/syntactic-closures.ss</a> provide<br>
> syntactic-closures-compile, syntactic-closures-execute and <br>
> syntactic-closures-scheme-syntactic-environment ?<br>
<br>
Idiomatic names might be "compile-syntactic-closures", <br>
"execute-syntactic-closures", etc.  If this library became a very common <br>
thing to use, familiar to most Racket programmers, maybe someone would <br>
come up with catchier names eventually (like <br>
"call-with-current-continuation" became "call/cc").<br>
<br>
><br>
> Collections may be renamed. Eventually collection names will become <br>
> longer, because they have to be unique (like in <br>
> java: org.apache.commons.lang.builder.ToStringBuilder). Besides we <br>
> have modules and prefix-in.<br>
<br>
I suspect that, in practice for the foreseeable future, if we use <br>
non-generic names, we won't have many collisions.  With the level of <br>
third-party reuse that I and my consulting clients have been doing over <br>
the last 10 years with Racket, I found that we only rarely use <br>
"prefix-in".  This is out of over 1,000 Racket modules and over a <br>
million of lines of Racket code, written by several people of varying <br>
background and style.<br>
<br>
My recollection offhand is that, when we have used "prefix-in", it's for <br>
improving code readability when:<br>
* using the profiler (due to its use of generic names like "render", <br>
used in large modules that often dealt with more prominent/likely <br>
``render'' concepts),<br>
* using the old SSAX/SXML PLaneT packages (due to not-entirely-idiomatic <br>
API and packaging), and<br>
* using some SRFI implementations (due to name conflicts),<br>
* doing Scheme/Racket dialect language work (to keep straight what <br>
dialect's identifiers we're talking about in a module).<br>
All other times I can think of, having sensible non-generic names and <br>
not needing the headache of "prefix-in" has seemed to be a win.<br>
<br>
Granted, I have a research interest in much more heavy fine-grain reuse, <br>
and if that's ever realized, I assume we'll see more identifier <br>
collisions and more confusing overloading of terms (e.g., the several <br>
different kinds of "date" objects I've seen in various code).  I <br>
couldn't say for certain that generic names and "prefix-in" (or some <br>
other facility) wouldn't start to be practical at that time; I'd have to <br>
wait and see.  Of course, the programming language technology is not the <br>
only way that these problems are solved, but can be solved in the <br>
ecology of development and reuse (e.g., as development and reuse <br>
sophistication increases, we might actually see fewer different kinds of <br>
things called "date" than we see now, since one kind might mature more, <br>
and consequently people might less often have occasion to make an <br>
alternative one).<br>
<br>
Neil V.<br>
<br>
</div>
                        
                
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>-- <br>Roman Klochkov<br></BODY></HTML>