Re: Better documentation and error messages are needed for the ns macro

2009-11-13 Thread Andrew Boekhoff
With clojure-in-clojure on the horizon (if not around the corner) I wonder if
an imports clause would be appropriate, and solve some of the complexities
of discerning between clojure and java/clr/javascript/objectivec/(go?)

(ns foo
   (uses clojure.contrib.repl-utils)
   (imports java.util [List Map Set]))

For the case of host-libraries import * is not even available,
so a single symbol for a class or a prefix symbol followed by
a vector is syntax simple enough for even myself to implement.

It might add some consistency if the above 'uses also worked at the repl as-is 
(import already works as a beginner would anticipate). So,

user (uses clojure.contrib.Math) just worked without quoting. 

As for how many options are allowed with keywords, as long the essential cases
are provided for it will always be possible to layer on a my-better-ns* macro 
that adds more sugar (like recursive prefix lists etc.)

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-13 Thread Chouser
On Wed, Nov 11, 2009 at 4:24 PM, John Harrop jharrop...@gmail.com wrote:
 One question: how would Java class imports be dealt with? I think it should
 be unified:
 (ns foo
   (uses java.io :only [File FileInputStream] :as io))

I think this is a bad idea.  Java (or other host) classes are not
Clojure functions, nor are host packages the same as Clojure
namespaces.  Trying to treat them the same (or worse yet
not quite the same because of options that work for one but not
the other) actually *increases* confusion, not decreases it.

Unifying require and use makes sense because they do almost the
same thing on exactly the same kinds of objects.  import does
something lese and should be left as its own form.

--Chouser

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-13 Thread John Harrop
On Fri, Nov 13, 2009 at 1:23 PM, Chouser chou...@gmail.com wrote:

 On Wed, Nov 11, 2009 at 4:24 PM, John Harrop jharrop...@gmail.com wrote:
  One question: how would Java class imports be dealt with? I think it
 should
  be unified:
  (ns foo
(uses java.io :only [File FileInputStream] :as io))

 I think this is a bad idea.  Java (or other host) classes are not
 Clojure functions


Not everything in a Clojure namespace is necessarily a Clojure function
either. Anything a var can hold (so, in fact, any Object) can be in a
Clojure namespace.

The point was to simplify syntax, rather than to simplify the underlying
mental model; the latter I agree can't simplify further since, as you say,
the host interop is not the same as Clojure.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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

Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Albert Cardona
YES please. If I could upvote this message I would.

A half-a-dozen of examples on ns/in-ns and require/use/refer and the
differences in using them at the prompt or inside a ns would be
fantastic.

The ns macro is one of the obscure corners of clojure. It relates to
the java class path problem, and its setup is completely non-obvious.
The ns macro has the potential of putting off an otherwise committed
newcomer. Clear and abundant short examples would go a long way, and
be very appreciated.

As a practical note, what I do now to find out the misterious usage of
use/refer/require is to grep the clojure contrib git repository for
examples.

Albert

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Miron Brezuleanu
Hello,

On Wed, Nov 11, 2009 at 2:57 PM, Albert Cardona sapri...@gmail.com wrote:
 YES please. If I could upvote this message I would.

 A half-a-dozen of examples on ns/in-ns and require/use/refer and the
 differences in using them at the prompt or inside a ns would be
 fantastic.

Some more ns documentation is on this page:
http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips

Agreed, it's only a third of a dozen examples, and they cover little
of the syntax supported by ns.

 The ns macro is one of the obscure corners of clojure. It relates to
 the java class path problem, and its setup is completely non-obvious.
 The ns macro has the potential of putting off an otherwise committed
 newcomer. Clear and abundant short examples would go a long way, and
 be very appreciated.


-- 
Miron Brezuleanu

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Stephen C. Gilardi


On Nov 10, 2009, at 9:08 PM, John Harrop wrote:


(ns foo.bar.baz
  (:use [clojure.contrib.core :only (seqable?)]))

(and thus violates the usual clojure rule of using vectors rather  
than lists for groupings that are not invocations -- that is,  
function calls, macro calls, or special form calls).


I agree it's too complicated and that examples would help.

Rich has also encouraged a look at simplifying the whole thing in the  
past and I would like to work on that.


Here are some of the ideas I've liked best for how to do it.

- replace :use, :require, and :load with one common thing with good  
conventions and easy ways to configure away from convention


  - maybe call it :uses

- require that each libspec (reference to a lib) be a vector,  
disallowing naked symbols and prefix extraction via prefix lists. This  
would mean that everything after :uses will be a vector which is known  
to be a complete specification of the dependency's name and how this  
lib uses it. (This regularity would help humans understand and outside- 
of-Clojure tools have an easier time parsing.)


- don't refer any names from the target namespace into the current  
namespace by default


  - support :only [], :rename {}, :exclude [], and :refer-all  
true options


(:refer-all true is not strictly necessary as it's a synonym  
for :exclude [], but the latter is much less clear to the human reader)


- automatically alias the leaf name of the lib as a reference to the  
lib:


  - (:uses [clojure.contrib.jmx]) would allow referring to the names  
in clojure.contrib.jmx by prefixing them with jmx/


  - disallow conflicts in leaf names, requiring one or the other lib  
to have an :as option giving another alias


  - open question as to whether using :only, :rename, :exclude,  
or :refer-all would suppress the automatic alias and require an  
explicit :as if an alias is also desired.


- remove the special :refer-clojure clause in favor of an optional  
[clojure.core] within :uses that changes the default for  
clojure.core away from :refer-all true


- (based on this thread) require that all seqs within :uses be vectors  
rather than lists.


Here is a portion of an ns form before and after these changes:

Before:

  (:refer-clojure :exclude [read])
  (:require (clojure.contrib [graph :as graph] [fcase :as fcase])
[clojure.contrib.stream-utils :as su])
  (:use [clojure.contrib def except server-socket]
clojure.contrib.lazy-xml
[clojure.contrib.java-utils :only [as-str]]
[clojure.stacktrace :only (root-cause)]
[clojure.walk :only [postwalk]])


After:

  (:uses [clojure.core :exclude [read])
 [clojure.contrib.graph]
 [clojure.contrib.fcase]
 [clojure.contrib.stream-utils :as su]
 [clojure.contrib.def :refer-all true]
 [clojure.contrib.except :refer-all true]
 [clojure.contrib.server-socket :refer-all true]
 [clojure.contrib.lazy-xml :refer-all true]
 [clojure.contrib.java-utils :only [as-str]]
 [clojure.stacktrace :only [root-cause]]
 [clojure.walk :only [postwalk]])

(Over time I would expect many :refer-all true options to become  
more selective references once this change makes referencing in  
everything slightly more difficult.)


I'd appreciate hearing ideas and critiques.

--Steve



smime.p7s
Description: S/MIME cryptographic signature


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread John Harrop
On Wed, Nov 11, 2009 at 1:12 PM, Stephen C. Gilardi squee...@mac.comwrote:

 Before:

  (:refer-clojure :exclude [read])
  (:require (clojure.contrib [graph :as graph] [fcase :as fcase])
[clojure.contrib.stream-utils :as su])
  (:use [clojure.contrib def except server-socket]
clojure.contrib.lazy-xml
[clojure.contrib.java-utils :only [as-str]]
[clojure.stacktrace :only (root-cause)]
[clojure.walk :only [postwalk]])


 After:

  (:uses [clojure.core :exclude [read])
 [clojure.contrib.graph]
 [clojure.contrib.fcase]
 [clojure.contrib.stream-utils :as su]
 [clojure.contrib.def :refer-all true]
 [clojure.contrib.except :refer-all true]
 [clojure.contrib.server-socket :refer-all true]
 [clojure.contrib.lazy-xml :refer-all true]
 [clojure.contrib.java-utils :only [as-str]]
 [clojure.stacktrace :only [root-cause]]
 [clojure.walk :only [postwalk]])

 (Over time I would expect many :refer-all true options to become more
 selective references once this change makes referencing in everything
 slightly more difficult.)

 I'd appreciate hearing ideas and critiques.


+1

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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

Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Andrew Boekhoff
   (:uses [clojure.core :exclude [read])
  [clojure.contrib.graph]
  [clojure.contrib.fcase]
  [clojure.contrib.stream-utils :as su]
  [clojure.contrib.def :refer-all true]
  [clojure.contrib.except :refer-all true]
  [clojure.contrib.server-socket :refer-all true]
  [clojure.contrib.lazy-xml :refer-all true]
  [clojure.contrib.java-utils :only [as-str]]
  [clojure.stacktrace :only [root-cause]]
  [clojure.walk :only [postwalk]])

+1

As a thought (which may offend some fans of explicit delimiters),
dropping the brackets and delimiting on symbols could be an option.

(ns foo
  (uses clojure.contrib.graph
clojure.contrib.stream-utils :as su
clojure.contrib.java-utils :only [as-str]))   

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Chouser
On Wed, Nov 11, 2009 at 1:12 PM, Stephen C. Gilardi squee...@mac.com wrote:

 Here are some of the ideas I've liked best for how to do it.

Thanks for pulling this together.  I like the whole direction
you're going here.

 - require that each libspec (reference to a lib) be a vector, disallowing
 naked symbols and prefix extraction via prefix lists. This would mean that
 everything after :uses will be a vector which is known to be a complete
 specification of the dependency's name and how this lib uses it. (This
 regularity would help humans understand and outside-of-Clojure tools have an
 easier time parsing.)

The only time this would bother me in the least is at the REPL.
I find the suggestion of not grouping them at all someone
interesting as well -- a bit like :gen-class.

 - don't refer any names from the target namespace into the current
 namespace by default

Hooray!

 - automatically alias the leaf name of the lib as a reference to the lib:

I think this may be ok, maybe even really great, though I think
Rich pointed out that it will encourage the creation of
namespaces with short leaf names.

  - open question as to whether using :only, :rename, :exclude, or :refer-all
 would suppress the automatic alias and require an explicit :as if an alias
 is also desired.

I vote for minimal magic -- auto alias happens unless you say :as
explicitly.  That does raise the question of how to prevent any
alias.  I don't particularly like either :as dummy-alias-2 or
:alias false but I'm not sure what else it could be.  Any other
ideas?

 - remove the special :refer-clojure clause in favor of an optional
 [clojure.core] within :uses that changes the default for clojure.core away
 from :refer-all true

Maybe require [clojure.core :refer-all false] if that's what you
mean?  Seems to me (:uses [clojure.core]) looks a lot like
a no-op.

I think all the other suggestions are good, and maybe more of
them deserve Hoorays as well. :-)

--Chouser

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Christophe Grand
Hi!

On Wed, Nov 11, 2009 at 7:12 PM, Stephen C. Gilardi squee...@mac.com wrote:
 Here are some of the ideas I've liked best for how to do it.

I like where this is heading.

 - don't refer any names from the target namespace into the current
 namespace by default

YES!

  - support :only [], :rename {}, :exclude [], and :refer-all true
 options

and of course :as alias that you mention below

    (:refer-all true is not strictly necessary as it's a synonym for :exclude
 [], but the latter is much less clear to the human reader)

In general :exclude suffers from the same problems as refer.
The new system should drive users away from :exclude to :only.

 - automatically alias the leaf name of the lib as a reference to the lib:

This is the only proposition I don't agree with. What about allowing
lib authors to specify a default alias?

Christophe

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Laurent PETIT
2009/11/11 Andrew Boekhoff boekho...@gmail.com:
   (:uses [clojure.core :exclude [read])
          [clojure.contrib.graph]
          [clojure.contrib.fcase]
          [clojure.contrib.stream-utils :as su]
          [clojure.contrib.def :refer-all true]
          [clojure.contrib.except :refer-all true]
          [clojure.contrib.server-socket :refer-all true]
          [clojure.contrib.lazy-xml :refer-all true]
          [clojure.contrib.java-utils :only [as-str]]
          [clojure.stacktrace :only [root-cause]]
          [clojure.walk :only [postwalk]])

 +1

 As a thought (which may offend some fans of explicit delimiters),
 dropping the brackets and delimiting on symbols could be an option.

 (ns foo
  (uses clojure.contrib.graph
            clojure.contrib.stream-utils :as su
            clojure.contrib.java-utils :only [as-str]))

+1 on giving up on the extra vectors, since they give nothing more if
the dsl becomes that simple (and I also like it becomes that simple
!).

One question, to be sure to correctly understand: only one optional
option is allowed after the symbol of a namespace ? (that is possible
options are considered mutually exclusive ?)

Also, I thing it is not too complicated for users to understand that :
 * either they don't provide an option and the behaviour defaults to [
last segment of the ns, or what chouser / Christophe suggest ]
 * either they provide an option, so the optional behaviour does not
apply, and it's the provided option that applies

My 0.02 €,

-- 
Laurent

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread John Harrop
On Wed, Nov 11, 2009 at 3:54 PM, Laurent PETIT laurent.pe...@gmail.comwrote:

 2009/11/11 Andrew Boekhoff boekho...@gmail.com:
(:uses [clojure.core :exclude [read])
   [clojure.contrib.graph]
   [clojure.contrib.fcase]
   [clojure.contrib.stream-utils :as su]
   [clojure.contrib.def :refer-all true]
   [clojure.contrib.except :refer-all true]
   [clojure.contrib.server-socket :refer-all true]
   [clojure.contrib.lazy-xml :refer-all true]
   [clojure.contrib.java-utils :only [as-str]]
   [clojure.stacktrace :only [root-cause]]
   [clojure.walk :only [postwalk]])
 
  +1
 
  As a thought (which may offend some fans of explicit delimiters),
  dropping the brackets and delimiting on symbols could be an option.
 
  (ns foo
   (uses clojure.contrib.graph
 clojure.contrib.stream-utils :as su
 clojure.contrib.java-utils :only [as-str]))

 +1 on giving up on the extra vectors, since they give nothing more if
 the dsl becomes that simple (and I also like it becomes that simple
 !).

 One question, to be sure to correctly understand: only one optional
 option is allowed after the symbol of a namespace ? (that is possible
 options are considered mutually exclusive ?)


Not necessarily; if the parsing rule is that a keyword makes a following
symbol part of an option, rather than a namespace name,  and all options
apply to the most recently seen namespace name. So

(ns foo
  (uses clojure.contrib.duck-streams :as ds :only [reader-on spit]
clojure.contrib.seq-utils :as su))

would alias everything in seq-utils under su, e.g. su/includes?, and would
also produce ds/reader-on and ds/spit.

Other combinations might be allowed too. For example, perhaps

(ns foo
  (uses clojure.contrib.duck-streams :only [reader-on spit] :as ds ))

should produce bindings for reader-on and spit in foo and for everything as
ds/whatever, and even

(ns foo
  (uses clojure.contrib.duck-streams
:only [reader-on spit]
:as ds :only [writer-on]))

would get you reader-on, spit, and ds/writer-on.

One question: how would Java class imports be dealt with? I think it should
be unified:

(ns foo
  (uses java.io :only [File FileInputStream] :as io))

gets you File, FileInputStream, io/FileOutputStream,
io/FileNotFoundException, etc.

The one difference being that :refer-all can't work easily for Java
packages, since there's no easy way that I'm aware of to programmatically
get a global list of everything in a Java package, although I suppose any
bare symbol not otherwise resolved could be searched for in each Java
package in turn that was refer-all'd. Detecting and forcing resolution of
name conflicts wouldn't work in this case, though, which bothers me; either
conflicts involving two Java classes brought in via refer-all would not be
detected at all, or they'd be detected only at the point where the name
resolution happens, thus possibly not until run-time, and then they would
depend on what jars might be on that particular install's classpath. Ouch.
So, I vote for not allowing :refer-all for Java packages.

As for how it can distinguish Java classes from functions:

First, in the case above the java.io package has no loadable Clojure
namespace in it, so obviously any name being used from it should be assumed
to be a Java class. Now if we use foo.bar and there's both a foo/bar.clj
with a (defn my-fn ...) and a foo/bar/Baz.class on the classpath, and we
have (uses foo.bar :only [my-fn Baz]), it should find my-fn in the Clojure
namespace, fail to find any Baz var in the Clojure namespace, and then see
if there's a Baz class in a Java package foo.bar, and so end up bringing in
the my-fn Clojure function and the Baz class as one would expect.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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

Re: Better documentation and error messages are needed for the ns macro

2009-11-11 Thread Jason Wolfe
I like almost all of this a lot.  My only disagreement is on prefix
lists ... I wouldn't want to lose them, and in fact would prefer to
see them extended to recursive prefix lists (trees).

-Jason

On Nov 11, 10:12 am, Stephen C. Gilardi squee...@mac.com wrote:
 On Nov 10, 2009, at 9:08 PM, John Harrop wrote:

  (ns foo.bar.baz
    (:use [clojure.contrib.core :only (seqable?)]))

  (and thus violates the usual clojure rule of using vectors rather  
  than lists for groupings that are not invocations -- that is,  
  function calls, macro calls, or special form calls).

 I agree it's too complicated and that examples would help.

 Rich has also encouraged a look at simplifying the whole thing in the  
 past and I would like to work on that.

 Here are some of the ideas I've liked best for how to do it.

 - replace :use, :require, and :load with one common thing with good  
 conventions and easy ways to configure away from convention

    - maybe call it :uses

 - require that each libspec (reference to a lib) be a vector,  
 disallowing naked symbols and prefix extraction via prefix lists. This  
 would mean that everything after :uses will be a vector which is known  
 to be a complete specification of the dependency's name and how this  
 lib uses it. (This regularity would help humans understand and outside-
 of-Clojure tools have an easier time parsing.)

 - don't refer any names from the target namespace into the current  
 namespace by default

    - support :only [], :rename {}, :exclude [], and :refer-all  
 true options

      (:refer-all true is not strictly necessary as it's a synonym  
 for :exclude [], but the latter is much less clear to the human reader)

 - automatically alias the leaf name of the lib as a reference to the  
 lib:

    - (:uses [clojure.contrib.jmx]) would allow referring to the names  
 in clojure.contrib.jmx by prefixing them with jmx/

    - disallow conflicts in leaf names, requiring one or the other lib  
 to have an :as option giving another alias

    - open question as to whether using :only, :rename, :exclude,  
 or :refer-all would suppress the automatic alias and require an  
 explicit :as if an alias is also desired.

 - remove the special :refer-clojure clause in favor of an optional  
 [clojure.core] within :uses that changes the default for  
 clojure.core away from :refer-all true

 - (based on this thread) require that all seqs within :uses be vectors  
 rather than lists.

 Here is a portion of an ns form before and after these changes:

 Before:

    (:refer-clojure :exclude [read])
    (:require (clojure.contrib [graph :as graph] [fcase :as fcase])
              [clojure.contrib.stream-utils :as su])
    (:use [clojure.contrib def except server-socket]
          clojure.contrib.lazy-xml
          [clojure.contrib.java-utils :only [as-str]]
          [clojure.stacktrace :only (root-cause)]
          [clojure.walk :only [postwalk]])

 After:

    (:uses [clojure.core :exclude [read])
           [clojure.contrib.graph]
           [clojure.contrib.fcase]
           [clojure.contrib.stream-utils :as su]
           [clojure.contrib.def :refer-all true]
           [clojure.contrib.except :refer-all true]
           [clojure.contrib.server-socket :refer-all true]
           [clojure.contrib.lazy-xml :refer-all true]
           [clojure.contrib.java-utils :only [as-str]]
           [clojure.stacktrace :only [root-cause]]
           [clojure.walk :only [postwalk]])

 (Over time I would expect many :refer-all true options to become  
 more selective references once this change makes referencing in  
 everything slightly more difficult.)

 I'd appreciate hearing ideas and critiques.

 --Steve

  smime.p7s
 3KViewDownload

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-10 Thread Richard Newman
 (ns foo.bar.baz
   (:use [clojure.contrib.core :only (seqable?)]))

 (and thus violates the usual clojure rule of using vectors rather  
 than lists for groupings that are not invocations -- that is,  
 function calls, macro calls, or special form calls).

It works fine with a vector.

user= (ns foo.bar.baz
   (:use [clojure.contrib.core :only [seqable?]]))
nil
foo.bar.baz= seqable?
#core$seqable_QMARK___1454 clojure.contrib.core 
$seqable_qmark___1...@4f2b6c89

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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


Re: Better documentation and error messages are needed for the ns macro

2009-11-10 Thread John Harrop
On Tue, Nov 10, 2009 at 9:11 PM, Richard Newman holyg...@gmail.com wrote:

  (ns foo.bar.baz
(:use [clojure.contrib.core :only (seqable?)]))
 
  (and thus violates the usual clojure rule of using vectors rather
  than lists for groupings that are not invocations -- that is,
  function calls, macro calls, or special form calls).

 It works fine with a vector.


Yeah, but it doesn't require one, versus:

foo.bar.baz= (let (a 10) (println a))
#CompilerException java.lang.IllegalArgumentException: let requires a
vector for its binding (NO_SOURCE_FILE:11)

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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

Re: Better documentation and error messages are needed for the ns macro

2009-11-10 Thread David Brown
On Tue, Nov 10, 2009 at 09:08:31PM -0500, John Harrop wrote:

In case anyone was wondering, apparently it wants

(ns foo.bar.baz
  (:use [clojure.contrib.core :only (seqable?)]))

(and thus violates the usual clojure rule of using vectors rather than lists
for groupings that are not invocations -- that is, function calls, macro
calls, or special form calls).

You can use vectors for everything other than the outside parens, if
you'd like.  They just need to be sequences.  I'm guessing people
usually use parens on the :use, because it at least looks like an
invocation (and is similar to the (use ...) call).  I've seen the
:only followed by a vector.

David

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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