On Tue, Jan 20, 2009 at 10:09 AM, Mark Addleman
<mark_addle...@bigfoot.com> wrote:
>
> I'm a long time Java programmer and, before that, a Smalltalker.  One
> of the major biggest challenges I face when picking up a new language
> is getting a working understanding of its libraries.  I believe that
> standardizing on a doc format was a pretty important driver for Java's
> success.
>
> As I see it, Java has three natural forms that aid a newbie learning
> its libraries:  Packages, hierarchies and type declarations.  Packages
> and hierarchies give newbies a few good ways of browsing the libraries
> to gain familiarity and, much more importantly, a way of organizing
> all those bits of information in our heads.  Type declarations serve
> as a good way of documenting the parameters for methods (e.g.
> parameter one must respond to well-defined set of messages).
>
> I'm willing to forgo the documentation benefits of type declarations
> to get back to dynamic typing that I enjoyed with Smalltalk but I'm
> too old to try to read through, memorize and create memes for a new
> library as rich as Clojure's.  At the same time, I think there are
> enough limitations to JavaDoc to warrant spending a little time trying
> to come up with a better alternative.
>
> I haven't thought my proposal through very well, but here's the idea:
> a multidimensional relational, categorization system similar to the
> tagging system seen on blogs or the WikiBadge (http://c2.com/cgi/wiki?
> WikiBadge) system.  The idea goes something like this:  Clojure
> functions could be tagged with any user created tag.  Tags can be
> related to one another through named relations to provide context.
> For example:
>
> Tags: "java interop" "primitive" "array function"
> Relations: "is a"
>
> A little prolog-ese:
> is_a(primitive, java_interop)
> is_a(array_function, primitive)
> array_function(areduce)
>
> With the appropriate logic, a search for "is_a(?, java_interop)" would
> yield "areduce"
>
> I suspect that by applying tags to function arguments and with careful
> definition of relations, a Clojure IDE could perform similarly fancy
> suggestions and refactorings as modern Java IDEs.
>
> I'm throwing this out to the group in an effort to jump start some
> real documentation efforts.  It would be a tremendous boon to
> Clojure's up-take, I think.

I completely agree that some form of categorization of core Clojure
functions would be very helpful. For example, which of the hundreds of
core functions perform some operation on a string? I started trying to
categorize them for my own benefit. See the first table at
http://www.ociweb.com/mark/programming/Clojure.html. This isn't yet
complete.

Stuart H., I think something like this would make a great appendix in your book!

-- 
R. Mark Volkmann
Object Computing, Inc.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to