Re: Collaboration Proposal: Beyond CLOS Generic Methods, Predicate Dispatch, and Pattern Matching

2011-05-13 Thread Antony Blakey

On 13/05/2011, at 2:21 PM, David Nolen wrote:

> - instance? or custom predicate matches done w/ if

I did quite a bit of this in the context of a Smalltalk implementation. One of 
the key features is fast type testing. I note in your example case you are 
relying on an id generic to provide the type tags that are type-hierarchy 
aware. As long as your type tests are wrt a tree, rather than a graph, then 
maintaining a DFS number on the tree gives very cheap subclass testing. In a 
dynamic language you have to maintain that number in the face of changes to the 
tree, which can be optimised in various ways such as an initial sparse 
allocation, with an increase in sparseness as you note parts of the tree being 
updated dynamically. Also you need to allow your dispatch functions to either 
be updated in response to tree changes (not a great idea) or to use a level of 
indirection so that you reference the type tree in some way in your test and 
get the appropriate id range on the fly (and, of course, maintain the bounding 
pair of ids in the tree for each node).

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If you pick up a starving dog and make him prosperous, he will not bite you. 
This is the principal difference between a man and a dog.
  -- Mark Twain


-- 
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: xml parsing

2011-03-16 Thread Antony Blakey

On 17/03/2011, at 8:20 AM, Laurent PETIT wrote:

> 2011/3/16 Stuart Sierra 
> I think xml-seq is returning a sequence representing a depth-first traversal 
> of the XML document.  So the first item in the sequence is the entire 
> document, followed by the first element under the root, and so on.
> 
> That's not the definition of depth-first, is it ?

It's a pre-order depth-first traversal.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

On the other side, you have the customer and/or user, and they tend to do what 
we call "automating the pain." They say, "What is it we're doing now? How would 
that look if we automated it?" Whereas, what the design process should properly 
be is one of saying, "What are the goals we're trying to accomplish and how can 
we get rid of all this task crap?"
  -- Alan Cooper


-- 
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: Literate Clojure - a good lead ...

2010-07-21 Thread Antony Blakey

On 22/07/2010, at 3:08 AM, Tim Daly wrote:

> "Language integration" is a false goal. It is technically possible to
> call functions in any language from latex but unnecessary in general.
> It is technically possible to generate latex from any language.

Have you read the paper? Being able to automatically embed the output of 
examples is a big win IMO.

> Symbol resolution is also rarely an issue in literate programs.
> Your prose is intended to explain "why" a code chunks exists,
> not "how" a code chunk works. If you explain the problem you
> are trying to solve and the issues of various approaches you considered
> then I can usually understand the solution.

Symbol resolution allows the environment to link symbols and their occurrences, 
and the same with hyperlinked output.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

All that is required for evil to triumph is that good men do nothing.


-- 
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: Literate Clojure - a good lead ...

2010-07-21 Thread Antony Blakey

On 21/07/2010, at 10:29 PM, Tim Daly wrote:

> The PLT Scheme mechanism mentioned above is a good idea
> but it has a niche quality to it.
> 
> Latex is an industry standard publication language. Many
> books and technical papers, especially in mathematics,
> use it. Some conferences require it. All publishers support
> it and it is widely used.

Going from the PLT form to Latex is possible. Why use Latex when you can use 
Clojure?

The essence of the PLT model is the language integration that allows symbol 
resolution by reusing the language mechanism for the documentation.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The fact that an opinion has been widely held is no evidence whatever that it 
is not utterly absurd.
  -- Bertrand Russell


-- 
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


Literate Clojure - a good lead ...

2010-07-20 Thread Antony Blakey
Might be of interest to some here: http://lambda-the-ultimate.org/node/4017

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Human beings, who are almost unique in having the ability to learn from the 
experience of others, are also remarkable for their apparent disinclination to 
do so.
  -- Douglas Adams 


-- 
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: Enhanced Primitive Support

2010-06-18 Thread Antony Blakey

On 18/06/2010, at 4:28 PM, Richard Newman wrote:

>> This imposes too high a burden on any programmer who cares about safety.
>> 
>> Don't buy it. That's the whole point of BigInt contagion. If fact and foo 
>> are correctly written this will work.
> 
> It only takes one library to screw up, and the whole stack falls down.
> 
> Screwing up can occur because of omission (fact being written with a "1", not 
> "1N", and not being tested with large inputs), or by design.
> 
> This whole debate arose because people care about the speed of their numeric 
> functions! The safety bignums (which make things slower) will be omitted for 
> performance reasons, or by accident, and people won't obey the contract of 
> the function… or won't be able to because of the complex interactions between 
> libraries. I can't control where every value in my program goes.
> 
> In Clojure as it stands now, those edge cases would see a small performance 
> penalty as bignums occurred (and then it would go away if they got demoted!). 
> After this change, a one-in-a-million collision of numbers and 
> performance-oriented programming would throw an exception with no way to 
> recover from higher up the stack.
> 
> A programmer who really cares about safety would thus indeed have to shoulder 
> a massive burden: either review and get complete test coverage over every 
> library in their dependency stack, or ensure that no non-bignum can ever 
> enter a library function. I guess that also means no strings, no file sizes, 
> no URLs, no values which might get recombined… because any of those values 
> could produce a non-bignum and enter an unsafe Clojure library function, 
> causing an overflow with no possibility of continuing. (This ain't Common 
> Lisp.)
> 
> Having digested Rich's notes, pretty much the only thing that I disagree with 
> is the lack of automatic bignum promotion/demotion. It seems like too much of 
> a bad tradeoff, sacrificing one of Clojure's selling points for a little 
> numeric performance. Thus far, Clojure has done pretty well in lexically 
> scoping its "please make this fast and unsafe" bits — primitive calls, loop, 
> transients. This would break that pattern.

+1, what I've been trying to say.

> I wonder: is there's a middle ground, where primitives are automatic almost 
> everywhere, but bignum promotion on overflow is still possible?

That's what I was suggesting by having two versions of functions, one with 
primitives and one with boxed values. I did some investigation on this for a 
Smalltalk JIT using LLVM, in the form of partial specialisation e.g. 
dynamically generating type-specialised versions of functions (methods in ST) 
and using the types available at the call site to dispatch - which is more 
obvious in Clojure because we already have multi-method dispatch. For Clojure 
you wouldn't test all types, it could just be a binary choice of all primitives 
where expected or not  Of course where a type-specialised function calls 
another type-specialised function you can avoid the dispatch entirely because 
you have the type information at the call site. This way, you can pay for the 
type-driven dispatch once at the start of a computation and end up doing 
minimal testing (basically dynamically checking that type invariants are 
maintained e.g. args haven't been promoted in the case under discussion). IMO 
this is speed + safety.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Reflecting on W.H. Auden's contemplation of 'necessary murders' in the Spanish 
Civil War, George Orwell wrote that such amorality was only really possible, 
'if you are the kind of person who is always somewhere else when the trigger is 
pulled'.
  -- John Birmingham, "Appeasing Jakarta"


-- 
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: Enhanced Primitive Support

2010-06-17 Thread Antony Blakey

On 18/06/2010, at 2:26 PM, David Nolen wrote:

> On Fri, Jun 18, 2010 at 12:24 AM, Antony Blakey  
> wrote:
> 
> That's fine for fact, but as a consumer of library functions, how do I know 
> when I should pass in bigints? How do I know when an intermediate value, for 
> my particular combination of parameter values, is going to overflow?
> 
> If the library isn't communicating that to you isn't that just a broken API 
> that you don't want to participate in? Tag information on arglists is 
> available:

No. How do I know whether I need to pass a bigint literal or not? For what 
possible input values will overflow be an issue? It's easy to see with fact, 
but that's because the function implementation is clearly visible, and has well 
known growth properties of a single argument. And it's not just literals - when 
functions are composed from other functions that have this same problem and 
return primitive types - hence using the static versions of functions - the 
question in general becomes impossible to answer, not only because there might 
be a number of parameters with interdependencies, but because the structure of 
intermediate results may not be visible to the consumer. And what if you don't 
have the source to the function? This proposal not only puts the burden of 
promotion and representation choice onto the user of a function, but it 
requires that promotion be done before the function is executed, in a 
precautionary way, rather than iff needed.

This proposal is IMO a very bad idea.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Lack of will power has caused more failure than lack of intelligence or ability.
 -- Flower A. Newhouse

-- 
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: Enhanced Primitive Support

2010-06-17 Thread Antony Blakey

On 18/06/2010, at 12:30 PM, Rich Hickey wrote:

> You raise several points, I'll take them in turn. First, things are not as 
> dire as you state. Certainly one could write a version of fact that hardwired 
> bigints as you showed. But you need not - here's the original naive 
> definition:
> 
> (defn fact [n]
>  (if (zero? n) 1 (* n (fact (dec n)
> 
> Such logic that doesn't specify one of the components (in this case, n) is 
> still polymorphic, as are operations with mixed components. So the power is 
> in the hands of the supplier of n:
> 
> user=> (fact 10)
> 3628800
> 
> user=> (fact 40)
> java.lang.ArithmeticException: integer overflow
> 
> user=> (fact 40N)
> 8159152832478977343456112695961158942720N

That's fine for fact, but as a consumer of library functions, how do I know 
when I should pass in bigints? How do I know when an intermediate value, for my 
particular combination of parameter values, is going to overflow?

Should I just use 'N' on every number to every function? This proposal destroys 
the black-box nature of functions, and seems to me to be the easy solution 
rather than the best solution, which, I acknowledge, might be very hard work, 
possibly involving every such function having 2 polymorphic variants, one 
generic boxed form and one unboxed form, automatically selected and 
call-site-cached like OO dispatch.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If you pick up a starving dog and make him prosperous, he will not bite you. 
This is the principal difference between a man and a dog.
  -- Mark Twain


-- 
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: Commercially-supported, polished Clojure development environment

2010-06-14 Thread Antony Blakey

On 14/06/2010, at 9:25 PM, Laurent PETIT wrote:

> Hi Chas,
> 
> I'm interested in being able to consult the detail of the answers (not
> just the summary view), 'cause I guess there could be interesting
> stuff in the "free form" parts of it (and the summary page just
> presents a few of these answers).

+1

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

What can be done with fewer [assumptions] is done in vain with more
  -- William of Ockham (ca. 1285-1349)



-- 
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: Interface to integrate transactions with Clojure transactions

2010-06-11 Thread Antony Blakey

On 11/06/2010, at 1:48 PM, Antony Blakey wrote:

> 
> On 11/06/2010, at 7:28 AM, James Reeves wrote:
> 
>> On 10 June 2010 22:40, Michael Jaaka  wrote:
>>> Not good, since if database commit fail it is too late for dosync to
>>> rollback.
>>> In fact database commit should somehow cooparate with dosync commit
>>> which is just a case of distributed transaction.
>> 
>> You're right. In which case, I don't believe there's a way to do this
>> without accessing the clojure.lang.LockingTransaction class directly.
> 
> It's not possible to do this without a two phase commit, which would require 
> quite a change to clojure's transactional mechanism in order to break the 
> existing commit login into a prepare and commit.

Now that I think about it, you could do this in clojure if you treat the 
clojure transaction as the last in line requiring prepare/commit. The final 
transaction participant can fold the prepare/commit into a simple commit using 
the following algorithm:

prepare all data sources
if any fail
rollback all data sources and rollback the clojure transaction
else
commit the clojure transaction
if it succeeds
commit all data sources
else
rollback all data sources

This doesn't give you full 2PC because it doesn't handle comms failure, but it 
does handle normal transactional semantics.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If you pick up a starving dog and make him prosperous, he will not bite you. 
This is the principal difference between a man and a dog.
  -- Mark Twain


-- 
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: Interface to integrate transactions with Clojure transactions

2010-06-10 Thread Antony Blakey

On 11/06/2010, at 7:28 AM, James Reeves wrote:

> On 10 June 2010 22:40, Michael Jaaka  wrote:
>> Not good, since if database commit fail it is too late for dosync to
>> rollback.
>> In fact database commit should somehow cooparate with dosync commit
>> which is just a case of distributed transaction.
> 
> You're right. In which case, I don't believe there's a way to do this
> without accessing the clojure.lang.LockingTransaction class directly.

It's not possible to do this without a two phase commit, which would require 
quite a change to clojure's transactional mechanism in order to break the 
existing commit login into a prepare and commit.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Isn't it enough to see that a garden is beautiful without having to believe 
that there are fairies at the bottom of it too?
  -- Douglas Adams

-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 2:27 PM, James Cunningham wrote:

> 
> 
> On May 30, 9:23 pm, Antony Blakey  wrote:
>> I care about Mac and Windows primarily, and building software that will sell 
>> (not dev tools) requires good native look and feel.
> 
> Do you have a single example of an SWT app that has a decent feel on
> OS X? I've spent a fair amount of time with Eclipse lately, and---
> frankly---it feels about as native as an Alabaman in Nice. No native
> toolbar, no native tabs, slower and uglier than either Netbeans or
> Intellij. My only other experience with an SWT app was entirely
> negative from a performance and look-and-feel perspective (Vuze).

Vuze looks OK to me in the 5 minutes I've just spent. In any case, my opinion 
comes from doing parallel GUI development in IB and SWT to see if I could use 
Clojure/SWT rather than MacRuby (XCode/IB). I'm not using the RCP which 
imprints it's own not-really-OSX flavour in spite of the widgets.

You have to do more than just use SWT to get a Mac application to feel right, 
and one's GUI layout code needs to be parametric and rules based, rather than 
just swapping the L&F. That said, it's still easier than writing three UIs.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The intuitive mind is a sacred gift and the rational mind is a faithful 
servant. We have created a society that honours the servant and has forgotten 
the gift.
  -- Albert Einstein


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 2:04 PM, lprefonta...@softaddicts.ca wrote:

> Two alternatives seem to gather some support, Swing and SWT.  Now what are 
> the 
> cost/benefits of choosing SWT ?

See below.

> What value brings SWT ?
> 
> a) Performance ? Maybe a few years ago but presently
> Swing and SWT are similar in terms of performance in general.

Not my experience, but YMMV, and in any case not the deciding factor for me.

> c) Cosmetic aspect ? SWT "wins" for its ability to look like other apps
> on a given platform. Swing offers a uniform look and feel.
> 
> So the only "feature" offered by SWT if I follow your point is c).
> At what cost ?

Well, I'd argue that it's more than cosmetic, which I take you to mean 
pejoratively. In fact I place an enormous value on this point, for what seems 
to me to be a slight cost (and the major one is manual management of resource 
lifetime, not deployment).

> Back to "why does producing software has to be more painful than necessary"
> and "what value brings SWT overall".

I guess we just differ in our assessment of 'necessary' and 'value' in this 
paragraph.

> 
>> 
>>> Were not in the cosmetics business however so we speak for our business
>>> (cross-platform, cross-language, cross-)
>> 
>> You are begging the question then.
> 
> Swing has prove itself up to know (and improved a lot), why get entangled
> in a complex process with all the above ramifications ?
> 
> Simplicity as some value. You should meditate a bit on this.

I'm a big fan of simplicity. However there are two sayings that come to mind:

1. Make everything as simple as possible, but not simpler. (Albert Einstein)
2. For every complex problem, there is an answer that is clear, simple - and 
wrong (H. L. Mencken).

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

In anything at all, perfection is finally attained not when there is no longer 
anything to add, but when there is no longer anything to take away.
  -- Antoine de Saint-Exupery


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey
I doubt this subthread is of any use to the OP at this point.

On 31/05/2010, at 12:31 PM, lprefonta...@softaddicts.ca wrote:

> Any suggestion is welcomed but I doubt we can find a core group of
> developers that will "win" this survey.

It's a survey group of 1 i.e. what are *his* responses to those questions.

> Yep but then you need to ship the DLLs (and any other native implementations 
> for
> the various platforms) with a synced version of the wrapper.
> Of course the native libraries may vary according to the platorm/maintenance
> releases, ...

And yet, somehow, commercial software is produced ...

> So should we expect problems in other OSes ? What about testing then ?
> Do we multiply the number of test suites to run by the number of platforms
> we support multiplied by the different versions of SWT ?

No, you treat SWT as a black box as regards testing. It has it's own test 
regime and cross-platform validation.

> Were not in the cosmetics business however so we speak for our business
> (cross-platform, cross-language, cross-)

You are begging the question then.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The trouble with the world is that the stupid are cocksure and the intelligent 
are full of doubt.
  -- Bertrand Russell


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 12:31 PM, Mike Meyer wrote:

> On Mon, 31 May 2010 10:53:45 +0930
> Antony Blakey  wrote:
> 
>> 
>> On 31/05/2010, at 10:44 AM, Marc Spitzer wrote:
>>> also lets not forget about LD_LIBRARY_PATH issues,
>> No Mac or Windows user would encounter these. 
> 
> You forget that the Mac is a Unix box. It supports LD_LIBRARY_PATH. In
> an ideal world - where every developer did things right - you'd never
> need it on any system. We don't live in such a world. In particular,
> OSX tends to ship with obsolete versions of *very* popular Unix
> libraries. So much so that you wind up having to choose between
> building obsolete versions of the tools you want, losing valuable
> features and bug fixes; or building current versions of libraries in
> the system, leading to having to make sure your code and only your
> code finds it - even when you're dynamically loading frameworks that
> want to use the system version of the same library.
> 
> On Windows, the problem is so common it's been given the name "DLL
> hell".


I build installers that include chains of co-dependent base libraries with 
isolating setups (programatically mutated binary and load paths) for multiple 
platforms, so I know about this issue, but I'm talking specifically about SWT 
which doesn't suffer from that problem.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Hi, I'd like to do $THING. I know that $SOLUTION_A and $SOLUTION_B will do it 
very easily and for a very reasonable price, but I don't want to use 
$SOLUTION_A or $SOLUTION_B because $VAGUE_REASON and $CONTRADICTORY_REASON. 
Instead, I'd like your under-informed ideas on how to achieve my 
$POORLY_CONCEIVED_AMBITIONS using Linux, duct tape, an iPod, and hours and 
hours of my precious time.
  -- Slashdot response to an enquiry


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 11:13 AM, Marc Spitzer wrote:

> I actually primarily do not care about mac or windows, personally or
> professionally.  Also keep in mind that one of the selling points of
> clojure is that it runs where *Java* runs not mac and windows, I would
> think that in my mind anyway, be a strong contributing point.  Now to
> be honest I am responsible for Macs at work but hopefully less of them
> as time goes by.

This is obviously another input into Luke's decision making. What kind of apps 
does he want to target, what kind of developers, what platforms, with what 
intentions.

> Have you ever heard of DLL HELL?  It is a special case of library path
> issues, they exist every where you have shared libs/DLLS being loaded.

That only happens if you try to share the DLL, which isn't necessary.

> And as a sysadmin I have had LD issues with OSX.

Consumer apps using SWT don't have this problem on OSX.

> your right we should all be using pcbsd much better, http://pcbsd.org/

LOL.

> native integration is not quality, quality is quality native
> integration is look and feel.

which is an essential part of quality from a user's perspective for the two 
consumer desktop platforms.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The project was so plagued by politics and ego that when the engineers 
requested technical oversight, our manager hired a psychologist instead.
  -- Ron Avitzur

-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 10:44 AM, Marc Spitzer wrote:

> I do agree with you for 'a' native wrapper.  What is your opinion for
> all native wrappers?  The thing is that each platform that requires
> native code is a source of tech support requests.  Now let me go with
> the things I have at work:
> 1: redhat 64 and 32 bit, various flavors
> 2: solaris x86 and sparc various flavors
> 3: aix various flavors
> 4: mac os various flavors including powerpc
> 5: windows
> 6 other linuxes

I care about Mac and Windows primarily, and building software that will sell 
(not dev tools) requires good native look and feel.

> also lets not forget about LD_LIBRARY_PATH issues,

No Mac or Windows user would encounter these. 

> incomparable
> installed libs, the need to go off the reservation to get something
> working.  Instead of yum working on my redhat boxes I need to compile
> a specific version of something *AND* make sure this app finds it but
> that the other apps do not.

And this is just one reason Linux on the desktop is a million miles from Mac 
and Windows.

> well java is not good enough if you want a native look, you need C/C++
> and binding that java uses.  And why should Luke be a martyr and pay
> the price in his personal time/life for something that should be fun.

a) SWT is not martydom, and is a lot better than Swing for a native L&F
b) Luke asked for opinions.

> Also please keep in mind that "Better" is a good target and generally
> much more achievable then  superlative. Shipped is also a wonderful
> thing.  Better and shipped are really cool.  And if you keep shipping
> better thing you get to superlative.

Not if your toolkit (Swing) places an upper bound on the quality of your app.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Nothing is really work unless you would rather be doing something else.
  -- J. M. Barre


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-30 Thread Antony Blakey

On 31/05/2010, at 9:44 AM, Marc Spitzer wrote:

> 2: it is good enough

IMO This is the entire point. Swing is not good enough if you want to build 
something with native integration and correct look and feel. Everything else 
comes down to whether developers are prepared to pay the price for producing 
something great. And anyway is 'good enough' what we should be aiming for. How 
about going for something superlative rather than something mediocre.

Bundling SWT into a native wrapper isn't a big deal.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Human beings, who are almost unique in having the ability to learn from the 
experience of others, are also remarkable for their apparent disinclination to 
do so.
  -- Douglas Adams 


-- 
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: Which GUI toolkit would you like to see wrapped in an idiomatic Clojure library?

2010-05-27 Thread Antony Blakey

On 28/05/2010, at 9:21 AM, Armando Blancas wrote:

>> Remember, the actual API won't matter - that will be completely
>> abstracted away. So try to focus on the framework's look and feel.
>> Thanks!
>> -Luke
> 
> SWT, because of the native look and feel. I really don't like the
> looks of Swing. As a user of some Swing app, I don't find solace from
> thinking how convenient it was for the programmers to deliver that
> thing to me. As a developer, dealing with the packaging/deployment
> just comes with the job and the results, I think, are well worth the
> effort.

+1 SWT. I think arguments that focus on the ease of deployment are misguided 
because an app is *used* far more times than it is deployed, so one really 
should focus on the quality of the end application. In any case, deployment and 
packaging for different platforms is easy to automate.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The trouble with the world is that the stupid are cocksure and the intelligent 
are full of doubt.
  -- Bertrand Russell


-- 
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: matchure becoming clojure.contrib.match

2010-05-24 Thread Antony Blakey

On 25/05/2010, at 3:10 PM, Meikel Brandmeyer wrote:

> Hi,
> 
> On May 25, 2:33 am, Stuart Halloway  wrote:
> 
>> How can we get both?
> 
> By providing a non-monolithic build?

Yes, and ensuring that the subprojects use semantic versioning e.g. major 
version number increments on a non-backwards compatible change, and hopefully 
real subproject releases that one can depend on. Something doesn't have to be 
perfect before it's usable, so people should be encouraged to do real releases 
as opposed to forever staying in alpha/beta and hence never providing reliable 
semantic versioning drop points e.g. stable major version numbers. I only raise 
this point because being a subproject IME discourages major-point releases in 
deference to the version number of the containing project.

In an ideal world of course.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Reflecting on W.H. Auden's contemplation of 'necessary murders' in the Spanish 
Civil War, George Orwell wrote that such amorality was only really possible, 
'if you are the kind of person who is always somewhere else when the trigger is 
pulled'.
  -- John Birmingham, "Appeasing Jakarta"


-- 
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: matchure becoming clojure.contrib.match

2010-05-24 Thread Antony Blakey

On 24/05/2010, at 1:11 PM, Drew Colthorp wrote:

> A few weeks ago I announced a pattern matching library called
> matchure. I'm excited to say it's being merged into clojure.contrib as
> clojure.contrib.match. I'd like some feedback on ideas for some
> backward-incompatible changes I'm planning to make before it's
> actually pushed to clojure.contrib.

...

> Anyone have an opinion?

Yes - please don't put this in clojure.contrib, for two reasons:

1. The stated instruction is to not depend on clojure.contrib, and the feedback 
I've received when I stated that I did in fact depend on it was that I was a 
fool for not following the instructions i.e. RTFI.

2. clojure.contrib is a large, monolithic bag of stuff, with a single version 
number. So to track changes to matchure I will be forced to track all of the 
changes to clojure.contrib. This is made even more difficult because 
clojure.contrib has no backwards compatibility intention. I know you don't 
either, but given the large number of different components in clojure.contrib, 
the likelihood of breaking changes for each commit is greatly increased. It's 
been breaking a lot recently, and given the number of third party components 
that depend on it (in spite of the warning), the knock-on effect is playing 
havoc with configuration management.

Why don't you just keep developing as matchure - there's no reason that 
everything destined for core needs to first pass into the quarantine zone that 
is clojure.contrib.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

I contend that we are both atheists. I just believe in one fewer god than you 
do. When you understand why you dismiss all the other possible gods, you will 
understand why I dismiss yours. 
  --Stephen F Roberts


-- 
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: clojure-contrib diffs?

2010-05-02 Thread Antony Blakey

On 03/05/2010, at 1:06 PM, Timothy Washington wrote:

> I've noticed that there are some big clojure-contrib source differences 
> between the 'master' branch and '1.1.0'. For example 1) 'io' is in master, 
> but not 1.1.0  2) json is in master, but json.read and json.write are in 1.1.0
> 
> I assume new developments are going into 1.1.0. But is it possible to keep 
> track of the lost libs like io? These are the sources I'm looking at. 
>   • http://richhickey.github.com/clojure-contrib/
>   • http://richhickey.github.com/clojure-contrib/branch-1.1.x/index.html


1.1.0 is stable. The git master is the upcoming 1.2.0

BTW: You can't depend on *anything* in contrib. It's not part of standard 
clojure (despite IMO being implicitly promoted that way on clojure.org) and 
there are no guarantees about backwards compatibility. It's been stated that 
contrib is a playground for new ideas that might make it into core clojure.

Of course, there are many useful libraries that are only available in contrib - 
contrib acts as a magnet, and then infects all those useful libraries with it's 
"you shouldn't be using me" status.

I'd like to advise you to only rely on single-purpose packages you find through 
dependency resolution (maven or lein) rather then the one-version-fits-all 
you're-a-fool-if-you-use-this indispensable big bundle of stuff that is 
contrib. But IMO that's not really feasible.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

You can't just ask customers what they want and then try to give that to them. 
By the time you get it built, they'll want something new.
  -- Steve Jobs



-- 
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: HOWTO http.agent ( PUT or potential 500 )

2010-05-02 Thread Antony Blakey

On 03/05/2010, at 10:47 AM, Timothy Washington wrote:

> Hey, ok so a noobie question here. I'm trying to use the 'http-agent' 
> function to make HTTP calls. I can do so easily as in fig. 1. But when I try 
> to make a PUT call as in fig. 2, I get a pretty ugly stacktrace, the bottom 
> one having the error "Caused by: java.lang.IllegalArgumentException: No 
> method in multimethod 'send-request-entity' for dispatch value: class 
> clojure.lang.PersistentStructMap" (fig. 3).
> 
> I figure I'm doing something dumb here but can't figure out what... 
> 1) I've tried adding a no-op handler function (fn [agnt] )  to see if the 
> error goes away - nope. 
> 2) I tried adding the example handler function that writes the response 
> directly to dis - no dice   
> :handler (fn [agnt]   (with-open [w (clojure.contrib.io/writer 
> "/tmp/out")](clojure.contrib.io/copy (clojure.contrib.http.agent/stream 
> agnt) w)))
> 
> Is there anything obvious I'm missing here?

The error is that it can't send your XML as the body. Convert the XML to a 
string and send that.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Every task involves constraint,
Solve the thing without complaint;
There are magic links and chains
Forged to loose our rigid brains.
Structures, structures, though they bind,
Strangely liberate the mind.
  -- James Fallen


-- 
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: Beginner's question regarding implementing a constructor using gen-class

2010-04-29 Thread Antony Blakey

On 30/04/2010, at 3:46 PM, Gregg Williams wrote:

> Have you ever wanted to abandon a simple program with a bug that has
> been DRIVING YOU CRAZY because it's just got to be something SO
> simple, you'd be embarrassed to admit that you didn't see WHAT WAS
> STARING YOU IN THE FACE all along? Well, this is mine:
> 
> (ns org.InfoML.genclassObject
> (:gen-class
>   :extends [java.lang.Object]

:extends java.lang.Object

(or just extends Object, because java.lang.* is automatically imported)

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

There is nothing more difficult to plan, more doubtful of success, nor more 
dangerous to manage than the creation of a new order of things... Whenever his 
enemies have the ability to attack the innovator, they do so with the passion 
of partisans, while the others defend him sluggishly, So that the innovator and 
his party alike are vulnerable.
  -- Niccolo Machiavelli, 1513, The Prince.


-- 
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: seq-contains? in practice

2010-04-29 Thread Antony Blakey
While I have no position on seq-contains?, I question this methodology, which 
I've seen a few times now. It's early days for Clojure, you're sampling a very 
small codebase, and there may be as yet unforseen idiomatic uses (such as you 
point out for testing) which invalidates this argument. In addition I think you 
may be begging the question somewhat. Rich's explanation is more sound than 
this argument.

On 29/04/2010, at 9:40 PM, Stuart Halloway wrote:

> "In theory, there is no difference between theory and practice. In practice, 
> there is." -Yogi Berra (maybe).
> 
> The recent thread on the new seq functions spun off into a theoretical 
> discussion about whether about the merits of having contains? and 
> seq-contains? as separate functions. I would like to ground that discussion 
> with some observations from real-world use:
> 
> Doing an O(n) search of a seq (via includes? or, under its new name, 
> seq-contains?) occurs the following number of times in various libraries:
> 
> Clojure:  0.
> Contrib:  0.
> Compojure:1. (and it's wrong--should be a set test)
> Incanter: 0.
> 
> (There are a few calls to seq-contains? in the test suite for contrib, and I 
> wrote all of them. If you write lots of unit tests you already know why such 
> calls make sense there.)
> 
> Also, AFAICT, there are *no* examples of using instance checks to select the 
> right containment function.  So the theoretical concerns about this issue 
> have basically no exemplars in practice.
> 
> "In theory, you may be right about 'contains?.' In practice, Rich Hickey is 
> right." - Stu Halloway. :-)

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Man will never be free until the last king is strangled with the entrails of 
the last priest.
  -- Denis Diderot

-- 
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: Which version of Netbeans to use Compojure on OSX?

2010-04-21 Thread Antony Blakey

On 22/04/2010, at 10:48 AM, Sean Devlin wrote:

> I think* the SE one will work, but I haven't tested it.

Yes it does.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If at first you don’t succeed, try, try again. Then quit. No use being a damn 
fool about it
  -- W.C. Fields

-- 
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: Version of netbeans with extra Clojure and Polyglot Maven/Leiningen support ...

2010-04-11 Thread Antony Blakey

On 12/04/2010, at 3:42 PM, mac wrote:

> Yes, this is very interesting and I would love to try it.
> Since I do most of my programming on a mac, a .dmg file would work
> fine for me.

OK, I'll setup a download site with the .app for Mac users and the patches 
against release68_fixes for anyone else.

I also have a version (1.1.1) of the Enclojure plugin that fixes the 
can't-find-clojure-jar when starting a project REPL (which is 100% of the time 
with my version of NB). I've sent a pull request to Eric, but in the meantime 
I'll make my version available.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

All that is required for evil to triumph is that good men do nothing.


-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: New clojure support in Polyglot Maven

2010-04-09 Thread Antony Blakey

On 10/04/2010, at 12:24 AM, Graham Fawcett wrote:

> Your building/installation instructions are a bit on the terse side,
> and left this Maven newbie in trial-and-error-land. :)

I haven't written any instructions, but yes, the instructions on the project 
aren't extensive. And the documentation that is on the sonatype site for 
clojure support is out of date because I don't yet have write access to the 
wiki yet. Sorry, I know software without good documentation is only half done.

> Particularly
> this statement confused me, because I don't know what an "assembly
> play" is, or why I'd want one:
> 
>  After this completes, you can unzip the assembly play with polyglot
>  maven:
> 
>  unzip pmaven-cli/target/pmaven-*-bin.zip
>  ./pmaven-cli*/bin/mvn
> 
> Or did you mean "unzip the assembly, and play with polyglot maven"?

Yes. Actually, this is a bad use of the term because 'assembly' means something 
specific in maven land i.e. the assembly plugin that does Leiningen uberjar 
kind of things (on steroids, of course).

> After trial-and-erroring, I gathered that after unzipping I ended up
> with a 'polyglot maven' directory whose 'bin/mvn' could be used to run
> tasks like 'mvn -f project.clj'. I assume that the Maven 2 instance I
> used to build polyglot-maven is not modified in any way (e.g. it
> wasn't retooled to be able to run 'mvn -f project.clj'). Is that
> correct?

No it doesn't touch existing maven installations, polyglot maven currently 
includes maven 3.0 alpha 7.

> To use this on an ongoing basis, should I should unzip polyglot-maven
> somewhere stable, and then just add the new 'polylot-maven/bin' to my
> PATH? (That may seem a silly question, but maybe there's a more
> Mavenish way to do these things, and I just don't know about it.)

No, that's right. Although be aware that there are a few things that Maven 3.0 
isn't backward compatible with yet. In particular I can't use the Atlassian 
plugin.

> One last point -- I tried 'mvn -f project.clj' on one of my existing
> Leiningen projects, and it failed because the project.clj contained
> some clauses that Polyglot Maven didn't expect (:main, :compile-path).
> These may not be relevant in a Maven build, but it would be nice if
> they could exist in the project.clj file without causing an error when
> using your tool. You've gone so far with Leiningen support already,
> this would be a valuable next step.

Yes, the extensive and complete Leiningen documentation indicates that there 
are a number of things not covered in my defproject macro :) I waver between 
thinking I should ignore properties I don't understand and wanting to deal with 
everything I possibly can, by treating unknowns as errors because you never 
know when that unknown property really is important. OTOH, I don't deal with 
Leiningen plugins and have no plans to, so maybe in this case "ignorance is 
bliss" is the best strategy.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Lack of will power has caused more failure than lack of intelligence or ability.
 -- Flower A. Newhouse

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Version of netbeans with extra Clojure and Polyglot Maven/Leiningen support ...

2010-04-09 Thread Antony Blakey
I have a private build of Netbeans that adds the following features to the 
maven support:

1. In the project view, Clojure srcs are listed under 'Clojure Packages' and 
'Clojure Test Packages', using a package view - no more digging through 
directories under 'Other Sources'.
2. Polyglot Maven poms and Leiningen project.clj files appear under 'Project 
Files'.
3. If Polyglot Maven is set as your Maven in Netbeans Preferences, then the 
Project Files context menu has actions to convert pom.clj -> pom.xml, pom.xml 
-> pom.clj and project.clj -> pom.xml, with appropriate dependency etc. 
refreshing and diagnostics output. This means you can modify your 
project.clj/pom.clj and regenerate pom.xml, which is then picked up by 
Netbeans, without leaving Netbeans.

This stuff can't be done in a plugin as it involves mods to core modules, and 
hence it will be quite some time, if ever, before it appears in official 
Netbeans. Is there any interest in these features, and if so, how do people 
suggest I make it available. I can easily post patches against the 
release68_fixes sources if you can build and package Netbeans yourself, or I 
can make an OS/X .dmg available (but not other platforms).

Of course it works with the latest update-site version of Enclojure, and apart 
from a small bug with REPL classpath detection, that I hope is fixed soon, is 
really a very nice Clojure environment with useful, albeit minimal Polyglot 
Maven and Leiningen integration.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

All that is required for evil to triumph is that good men do nothing.


-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: New clojure support in Polyglot Maven

2010-04-08 Thread Antony Blakey

On 08/04/2010, at 9:09 PM, Jarkko Oranen wrote:

> 
>> Hopefully you can see that this syntax falls out of the direct construction 
>> of maven Model object, unmediated by intermediate syntax or data 
>> structuring. So there's a good reason for the way it looks.
>> 
> 
> Right. Thanks for the thorough explanation. It's not so bad if you
> quote the vectors instead of the individual symbols. However, it seems
> to me that defmaven could very well be a plain function in that case
> (just (reset! *MODEL* (apply Model args))). :)

Yes, you're right. I'll make that change.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The ultimate measure of a man is not where he stands in moments of comfort and 
convenience, but where he stands at times of challenge and controversy.
  -- Martin Luther King


-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: New clojure support in Polyglot Maven

2010-04-08 Thread Antony Blakey

On 08/04/2010, at 5:45 PM, Jarkko Oranen wrote:

> Looks cool. This should help the XML-allergic :)
> 
> Though, is there a reason why all symbol arguments to defmodel have to
> be quoted? It looks rather unpleasant. Seems like you should be able
> to fix that by changing the body of defmaven to
>  `(reset! *MODEL* (Model ~@(for [a args] `(quote ~a
> 
> Another possible approach is to wrap the free key-value pairs in a map
> or a vector so that it's easy to quote the whole form.

The point is that the unlike defproject, the body is assumed to be executable 
content, rather than just data. And you can do

  :dependencies '[[org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]
  ...
  [hiccup "0.2.3"]]

which reduces the amount of quoting.

In fact, this defmaven form:

(defmaven 'org.clojure/clojure "1.2.0-master-SNAPSHOT"
:model-version "4.0.0"
:name "Lamdras Website"
:description "Acumen / LRMDS Integration"
:properties { :project.build.sourceEncoding "UTF-8" }
:packaging "war"
:dependencies [['ring/ring-servlet "0.2.0-RC2"]
   ['ring/ring-devel "0.2.0-RC2"]
   ['clj-routing/ "0.1.0-SNAPSHOT"]
   ['clout "0.2.0-SNAPSHOT"]
   ['compojure "0.4.0-SNAPSHOT"]
   ['hiccup "0.1.0-SNAPSHOT"]
   'org.clojure/clojure
   'org.clojure/clojure-contrib
   'congomongo/congomongo]
:provided-dependencies [['org.mortbay.jetty/servlet-api-2.5 "6.1.14"]]
:build [:final-name "website"
:plugins [['org.apache.maven.plugins/maven-compiler-plugin "2.1" 
:source "1.6" :target "1.6"]
  ['com.theoryinpractise/clojure-maven-plugin "1.3.1"
   :sourceDirectories ["src/main/java"]
   :executions [[:id "compile-clojure" :phase "compile" :goals 
["compile"
  ['org.mortbay.jetty/maven-jetty-plugin "6.1.10"
   :scanIntervalSeconds 10 :stopKey "foo" :stopPort ]]])

has an equivalent, canonical representation something like this:

(Model 
:group-id "org.clojure" :artifact-id "clojure" :version "1.2.0-master-SNAPSHOT"
:model-version "4.0.0"
:name "Lamdras Website"
:description "Acumen / LRMDS Integration"
:properties { :project.build.sourceEncoding "UTF-8" }
:packaging "war"
:dependencies [(Dependency :group-id "ring" :artifact-id "ring-servlet" 
:version "0.2.0-RC2")
   (Dependency :group-id "ring" :artifact-id "ring-devel" :version 
"0.2.0-RC2")
   (Dependency :group-id "clj-routing" :artifact-id "clj-routing" 
:version "0.1.0-SNAPSHOT")
   (Dependency :group-id "clout" :artifact-id "clout" :version 
"0.2.0-SNAPSHOT")
   (Dependency :group-id "compojure" :artifact-id "compojure" 
:version "0.4.0-SNAPSHOT")
   (Dependency :group-id "hiccup" :artifact-id "hiccup" :version 
"0.1.0-SNAPSHOT")
   (Dependency :group-id "org.clojure" :artifact-id "clojure")
   (Dependency :group-id "org.clojure" :artifact-id 
"clojure-contrib")
   (Dependency :group-id "congomongo" :artifact-id "congomongo")
   (Dependency :group-id "org.mortbay.jetty" :artifact-id 
"servlet-api-2.5" :version "6.1.14" scope: "provided")]
:build (Build 
:final-name "website"
:plugins [(Plugin :group-id "org.apache.maven.plugins" :artifact-id 
"maven-compiler-plugin" :version "2.1"
   :configuration: [[:source "1.6"] [:target "1.6"]])
  (Plugin :group-id "com.theoryinpractise" :artifact-id 
"clojure-maven-plugin" :version "1.3.1"
   :configuration [[:sourceDirectories [[:sourceDirectory 
"src/main/java"
   :executions [(Execution :id "compile-clojure" :phase 
"compile" :goals ["compile"])])
  (Plugin :group-id "org.mortbay.jetty" :artifact-id 
"maven-jetty-plugin" :version "6.1.10"
   :configuration [[:scanIntervalSeconds 10] [:stopKey "foo"] 
[:stopPort ]])]))

where Model, Dependency, Build,. Plugin, Execution (and many more) are 
functions that create e.g. 

New clojure support in Polyglot Maven

2010-04-07 Thread Antony Blakey
I've just pushed a major update to the Clojure support in pmaven to 
http://github.com/sonatype/polyglot-maven. It now covers 100% of maven by 
reflecting over the maven object model. Examples are in the tests and in the 
reader.clj source file. It includes leiningen support e.g. mvn -f project.clj 
install should work.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The ultimate measure of a man is not where he stands in moments of comfort and 
convenience, but where he stands at times of challenge and controversy.
  -- Martin Luther King


-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Leiningen integration?

2010-04-04 Thread Antony Blakey
For those interested in clojure maven, I've just published 
http://github.com/AntonyBlakey/polyglot-maven/tree/reflective-clojure-dsl , 
which is a clojure front-end for polyglot maven. It could do with more testing, 
and documentation, but apart from dealing with namespaces and attributes in the 
configuration xml (trivial), and having the writer simplify it's output, it's 
feature-complete. It uses reflective macros over the maven object model, so it 
should be 100% complete coverage of maven, in very little code.

Because of the lack of docs, look at the tests or the example at the end of 
reader.clj to see how it works. Because it's a programatic format with 
declarative conveniences, I hope it's fairly straightforward to understand.

It also includes a leiningen defproject macro.

I'm hoping to uploaded a prebuilt zip soon.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Always have a vision. Why spend your life making other people’s dreams?
 -- Orson Welles (1915-1985)

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Leiningen integration?

2010-04-02 Thread Antony Blakey
I'm working on Clojure support for polyglot maven, and I anticipate publishing 
an initial feature-complete 100%-of-Maven version today. It not only 
reads/writes a programatic format like this:

(defmaven 'org.clojure/clojure "1.2.0-master-SNAPSHOT"
 :model-version "4.0.0"
 :name "Lamdras Website"
 :description "Acumen / LRMDS Integration"
 :properties { :project.build.sourceEncoding "UTF-8" }
 :packaging "war"
 :dependencies [['ring/ring-servlet "0.2.0-RC2"]
['ring/ring-devel "0.2.0-RC2"]
['clj-routing/ "0.1.0-SNAPSHOT"]
['clout "0.2.0-SNAPSHOT"]
['compojure "0.4.0-SNAPSHOT"]
['hiccup "0.1.0-SNAPSHOT"]
'org.clojure/clojure
'org.clojure/clojure-contrib
'congomongo/congomongo]
 :provided-dependencies [['org.mortbay.jetty/servlet-api-2.5 "6.1.14"]]
 :build [:final-name "website"
 :plugins [['org.apache.maven.plugins/maven-compiler-plugin "2.1" 
:source "1.6" :target "1.6"]
   ['com.theoryinpractise/clojure-maven-plugin "1.3.1"
:sourceDirectories ["src/main/java"]
:executions [[:id "compile-clojure" :phase "compile" :goals 
["compile"
   ['org.mortbay.jetty/maven-jetty-plugin "6.1.10"
:scanIntervalSeconds 10 :stopKey "foo" :stopPort ]]])

but also reads leiningen project.clj files *unmodified*. So this is some degree 
of leiningen support given NB's maven support. Polyglot maven can convert 
between input formats, so it can read a leiningen project.clj and write a 
pom.xml, adding the plugins required (which are actually added by the 
defproject macro when the project.clj is read). You can then go from the 
pom.xml to pom.clj, which produces the 'native' format shown above. It doesn't 
write a leiningen project.clj.

I also have a private build of NB that integrates polyglot maven, treating all 
the different pom.* language files and project.clj as 'Project Files', using 
whatever pom/project file is available as maven input. Furthermore it provides 
'Clojure Packages' nodes in the project explorer, so you don't have to dig 
through directories under 'Other Sources'. I'm not sure how to publish these 
changes yet (they can't be done as a plugin, they're core maven package mods) - 
I think I need to go through some administrative rigmarole with netbeans.org

On 03/04/2010, at 11:55 AM, Eric Thorsen wrote:

> I'm disappointed that I cannot plug the clojars repo into Netbeans and
> I'm not certain what the full plan of Leiningen is in lue of the
> polyglot project (http://polyglot.sonatype.org) which appears to have
> Clojure support moved up as a first class supported language.  I
> started Enclojure because I wanted to code in Clojure and have all my
> developers do the same and wanted tools to support that.  I would much
> rather be defining my build scripts in Clojure but I'd hate to have to
> veer away from all that is there in Maven so the polyglot project
> would be more interesting to me than something custom just for the
> Clojure community.  Netbeans, Eclipse and IntelliJ appear to do maven
> really well and I really want to spend my time working on things that
> will help me move my Clojure development forward and getting involved
> in a custom build system when maven and polyglot are around would be
> unlikely to pull me away from other features.
> 
> I know Leinigen can generate pom.xml files and if your sources are in
> the appropriate directories (or the source dir is defined in the pom),
> you can work with the REPL and it will support it like any other maven
> project.  It is a unidirectional path however so some of the goodies
> of being able to search through indexed repos and add them to your pom
> will have to be enter manually into your project.clj and you would
> regenerate the pom.
> 
> You still get all the repl support and completion with all your
> dependancies recognized which is not nothing and may get you where you
> want to be for now.
> 
> I hope this is helpful.
> Eric
> 
> On Mar 17, 9:36 am, Phil Ventura  wrote:
>> Are there any plans to integrate Leiningen into enclojure?
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "enclojure" group.
> To post to this group, send email to encloj...@googlegroups.com.
> To unsubscribe from this group, send email to 
> enclojure+unsubscr...@goog

Re: Polyglot (Clojure) Maven (Was: Re: Choosing a Clojure build tool)

2010-03-29 Thread Antony Blakey

On 28/03/2010, at 8:01 PM, B Smith-Mannschott wrote:

> On Sun, Mar 28, 2010 at 08:39, Antony Blakey  wrote:
>> 
>> On 28/03/2010, at 4:42 PM, Antony Blakey wrote:
>> 
>>> (defproject main "org.clojars.the-kenny:clojure-couchdb:0.2"
>>>  :add-default-plugins true
>>>  :description "Simple Clojure interface to Apache CouchDB, fork of the 
>>> original project with function arguments instead of *server* and some other 
>>> changes."
>>>  :dependencies [["org.clojure:clojure:1.1.0-master-SNAPSHOT"]
>>> ["org.clojure:clojure-contrib:1.0-SNAPSHOT"]
>>> ["org.clojure:clojure-http-client:1.0.0-SNAPSHOT"]])
>> 
>> Actually, it's even simpler than that because the string-format coordinates 
>> removes the need to wrap the coordinate in a vector:
> 
> True, but concatenating the three coordinates together into a single
> string smells like a [first normal form][1NF] violation to me. I think
> Leiningen's notation is a better fit and more idiomatic as Clojure,
> even if it is a little more verbose to type.

Having completed this now, so I can read leningen files, the problem is that 
the leiningen format needs to be quoted i.e the macro needs to transform

  :dependencies [[a/b "1.0"]] 

into

  :dependencies '[[a/b "1.0"]]

which means that the dependencies list cannot be computed dynamically (well, 
without extra syntax to unquote). It would have been ok if leiningen required 
quoted symbols e.g.

  :dependencies [['a/b "1.0"]]

> - Clojure code manipulating poloyglot's notation is more complex
> because it must be parsed first, and then recombined. Leiningen's
> notation already is 'parsed'.

Parsing is still required in order to deal with the optional nature of the 
group id and version number e.g.

  (defmulti parse-reference class)

  (defmethod parse-reference clojure.lang.Symbol
[reference]
(let [artifact (name reference)
  group (if-let [g (namespace reference)] g artifact)]
  {:group-id group :artifact-id artifact}))

  (defmethod parse-reference clojure.lang.PersistentVector
[reference]
(let [ga (parse-reference (reference 0))]
  (if (and (> (count reference) 1) (= (class (reference 1)) String))
(assoc ga :version (reference 1))
    ga)))

So the difference is minor.

> - Editing just the version of a dependency (or the project itself) is
> a fairly common occurrence and is somewhat more awkward if you're
> editing only *part* of a string literal, rather than a single token.

Agreed.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Always have a vision. Why spend your life making other people’s dreams?
 -- Orson Welles (1915-1985)

-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Polyglot (Clojure) Maven (Was: Re: Choosing a Clojure build tool)

2010-03-28 Thread Antony Blakey
APSHOT"]
   [org.sonatype.pmaven/pmaven-jruby 
"0.8-SNAPSHOT"]
   [org.sonatype.pmaven/pmaven-commands 
"0.8-SNAPSHOT"]
   [org.sonatype.pmaven/pmaven-clojure 
"0.8-SNAPSHOT"]
   [org.sonatype.pmaven/pmaven-scala 
"0.8-SNAPSHOT"]]}
:test-dependencies [[junit "4.7"]
org.codehaus.groovy/groovy]
:modules ["pmaven-common" "pmaven-maven-plugin" "pmaven-groovy" 
"pmaven-yaml" "pmaven-clojure" "pmaven-jruby" "pmaven-scala" "pmaven-cli" 
"pmaven-commands"]
:default-goal "install"
:plugins [[org.apache.maven.plugins/maven-surefire-plugin "2.5" 
:redirectTestOutputToFile true
:forkMode 
"once"
:argLine 
"-ea"

:failIfNoTests false

:workingDirectory "${project.build.directory}"
:excludes 
["**/Abstract*.java" "**/Test*.java"]
:includes 
["**/*Test.java"]]
  [org.apache.maven.plugins/maven-compiler-plugin "2.0.2" :source 
"1.5" :target "1.5"]
  [org.codehaus.gmaven/gmaven-plugin "1.2" :providerSelection "1.7"
[:default [["generateStubs" "compile" "generateTestStubs" 
"testCompile"
  [org.codehaus.plexus/plexus-component-metadata "1.5.1"
[:default [["generate-metadata" "generate-test-metadata"
  [org.apache.maven.plugins/maven-release-plugin "2.0-beta-9" 
:useReleaseProfile false
  
:goals "deploy"
  
:arguments "-B -Prelease"
  
:autoVersionSubmodules true]
  [org.apache.maven.plugins/maven-scm-plugin "1.2"]])

--

Note that dependencies without version numbers aren't wrapped in vectors. This 
is very common in child modules because the parent specifies the version 
numbers, as shown above in the dependency-management section.

Things such as :packaging have sensible defaults (in that case, "jar"), and if 
:model-version and :add-default-plugins is omitted then it will assume it is a 
leiningen project.clj. Therefore leiningen input files are valid polyglot maven 
input files. It isn't 100% or bidirectionally interoperable because a) 
leiningen plugins don't work and b) leiningen can't take the full format. Given 
all of the above, the following leiningen project.clj would be valid input to 
polyglot maven:

--

(defproject org.clojars.the-kenny/clojure-couchdb "0.2"
 :description "Simple Clojure interface to Apache CouchDB, fork of the original 
project with function arguments instead of *server* and some other changes."
 :dependencies [[org.clojure/clojure "1.1.0-master-SNAPSHOT"]
[org.clojure/clojure-contrib "1.0-SNAPSHOT"]
[org.clojure/clojure-http-client "1.0.0-SNAPSHOT"]]
 :dev-dependencies [[lein-clojars "0.5.0-SNAPSHOT"]
[org.clojure/swank-clojure "1.0"]])

--

There's one wrinkle to do with :dev-dependencies, which need to be ignored, but 
that's trivial.

Opinions on any of this? As long as plugins could be written in Clojure (and 
Scala/Ruby/Groovy presumably), would current leiningen users use polyglot maven?

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Reflecting on W.H. Auden's contemplation of 'necessary murders' in the Spanish 
Civil War, George Orwell wrote that such amorality was only really possible, 
'if you are the kind of person who is always somewhere else when the trigger is 
pulled'.
  -- John Birmingham, "Appeasing Jakarta"


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Polyglot (Clojure) Maven (Was: Re: Choosing a Clojure build tool)

2010-03-28 Thread Antony Blakey

On 28/03/2010, at 8:01 PM, B Smith-Mannschott wrote:

> - Clojure code manipulating poloyglot's notation is more complex
> because it must be parsed first, and then recombined. Leiningen's
> notation already is 'parsed'.

Partly parsed. The most 'correct' form would be [groupdId artifactId version] 
i.e. not conflating the groupId and artifactId into a single lexical value.

> - Editing just the version of a dependency (or the project itself) is
> a fairly common occurrence and is somewhat more awkward if you're
> editing only *part* of a string literal, rather than a single token.

I prefer the forms that don't invent new lexical constructs. For a start 
they're more amenable to manipulation using direct language facilities.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If a train station is a place where a train stops, what's a workstation?


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Can I GPL my Clojure project?

2010-03-28 Thread Antony Blakey

On 28/03/2010, at 5:33 PM, Stefan Kamphausen wrote:

> It will be interesting how the licenses will be interpreted in Clojure
> where Java and Lisp bump together.  The Java-world probably had it's
> discussion, too, no?

The "Classpath Exception" is the principal result of this discussion: 
http://www.gnu.org/software/classpath/license.html

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Only two things are infinite, the universe and human stupidity, and I'm not 
sure about the former.
 -- Albert Einstein 

-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Polyglot (Clojure) Maven (Was: Re: Choosing a Clojure build tool)

2010-03-27 Thread Antony Blakey

On 28/03/2010, at 4:42 PM, Antony Blakey wrote:

> (defproject main "org.clojars.the-kenny:clojure-couchdb:0.2"
>  :add-default-plugins true
>  :description "Simple Clojure interface to Apache CouchDB, fork of the 
> original project with function arguments instead of *server* and some other 
> changes."
>  :dependencies [["org.clojure:clojure:1.1.0-master-SNAPSHOT"]
> ["org.clojure:clojure-contrib:1.0-SNAPSHOT"]
> ["org.clojure:clojure-http-client:1.0.0-SNAPSHOT"]])

Actually, it's even simpler than that because the string-format coordinates 
removes the need to wrap the coordinate in a vector:

(defproject main "org.clojars.the-kenny:clojure-couchdb:0.2"
 :add-default-plugins true
 :description "Simple Clojure interface to Apache CouchDB, fork of the original 
project with function arguments instead of *server* and some other changes."
 :dependencies ["org.clojure:clojure:1.1.0-master-SNAPSHOT"
"org.clojure:clojure-contrib:1.0-SNAPSHOT"
"org.clojure:clojure-http-client:1.0.0-SNAPSHOT"])


Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Only two things are infinite, the universe and human stupidity, and I'm not 
sure about the former.
 -- Albert Einstein 

-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Polyglot (Clojure) Maven (Was: Re: Choosing a Clojure build tool)

2010-03-27 Thread Antony Blakey
[I've cross posted because I think this is relevent to both lists]

I've started fixing some bugs in the Clojure support in polyglot maven. I've 
sent pull requests upstream, but until then you can get it from 
http://github.com/AntonyBlakey/polyglot-maven. It works as my default maven 
(although there are some plugins such as the Atlassian stuff that doesn't work 
in Maven 3), and is self hosting.

The simplest pom.clj, corresponding to this leiningen project:

(defproject org.clojars.the-kenny/clojure-couchdb "0.2"
  :description "Simple Clojure interface to Apache CouchDB, fork of the 
original project with function arguments instead of *server* and some other 
changes."
  :dependencies [[org.clojure/clojure "1.1.0-master-SNAPSHOT"]
 [org.clojure/clojure-contrib "1.0-SNAPSHOT"]
 [org.clojure/clojure-http-client "1.0.0-SNAPSHOT"]]
  :dev-dependencies [[lein-clojars "0.5.0-SNAPSHOT"]
 [org.clojure/swank-clojure "1.0"]])

is:

(defproject main "org.clojars.the-kenny:clojure-couchdb:0.2"
  :add-default-plugins true
  :description "Simple Clojure interface to Apache CouchDB, fork of the 
original project with function arguments instead of *server* and some other 
changes."
  :dependencies [["org.clojure:clojure:1.1.0-master-SNAPSHOT"]
 ["org.clojure:clojure-contrib:1.0-SNAPSHOT"]
 ["org.clojure:clojure-http-client:1.0.0-SNAPSHOT"]])

The most obvious difference is in the coordinate syntax. Note that this 
includes the clojure-maven-plugin, so you get the following clojure-specific 
goals:

  clojure:compile clojure:test clojure:run clojure:repl clojure:swank 
clojure:nailgun

You can package using "mvn package", and install to the local repository using 
"mvn install". There are many other things you can do using existing maven 
plugins. I have a branch that allows leiningen-format artifact references e.g.

(defproject main org.clojars.the-kenny/clojure-couchdb "0.2"
  :add-default-plugins true
  :description "Simple Clojure interface to Apache CouchDB, fork of the 
original project with function arguments instead of *server* and some other 
changes."
  :dependencies [[org.clojure/clojure "1.1.0-master-SNAPSHOT"]
 [org.clojure/clojure-contrib "1.0-SNAPSHOT"]
 [org.clojure/clojure-http-client "1.0.0-SNAPSHOT"]])

The single benefit is that it would be easy to allow an existing unmodified 
project.clj to be used by maven, although without leiningen plugins. I'm not 
sure if it's worth it, and I'm interested in hearing arguments pro and con.

My next step is to make sure it's easy to write polyglot maven plugins in 
Clojure, with easy deployment.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Every task involves constraint,
Solve the thing without complaint;
There are magic links and chains
Forged to loose our rigid brains.
Structures, structures, though they bind,
Strangely liberate the mind.
  -- James Fallen


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Choosing a Clojure build tool

2010-03-26 Thread Antony Blakey
I'm now using polyglot maven for a project in both NetBeans/Enclojure and 
Intellij/LaClojure. The pom.clj for one of my subprojects looks like this:

--

(defproject main "com.linkuistics.lamdras:website:1.0-SNAPSHOT"
 :model-version "4.0.0"
 :name "Lamdras Website"
 :description "Acumen / LRMDS Integration"
 :packaging "war"
 :properties {:project.build.sourceEncoding "UTF-8"}
 :dependencies [["ring:ring-servlet:0.2.0-RC2"]
["ring:ring-devel:0.2.0-RC2"]
["clj-routing:clj-routing:0.1.0-SNAPSHOT"]
["clout:clout:0.2.0-SNAPSHOT"]
["compojure:compojure:0.4.0-SNAPSHOT"]
["hiccup:hiccup:0.1.0-SNAPSHOT"]
["org.clojure:clojure:1.2.0-master-SNAPSHOT"]
["org.clojure:clojure-contrib:1.2.0-master-SNAPSHOT"]
["congomongo:congomongo:0.1.2-SNAPSHOT"]
["jline:jline:0.9.94"]]
 :provided-dependencies [["org.mortbay.jetty:servlet-api-2.5:6.1.14"]]
 :final-name "website"
 :plugins [["org.apache.maven.plugins:maven-war-plugin:2.1-beta-1"]
   ["org.apache.maven.plugins:maven-compiler-plugin:2.1" 
{:configuration {:source "1.6" :target "1.6"}}]
   ["com.theoryinpractise:clojure-maven-plugin:1.3.1" {:executions 
[{:id "compile-clojure" :phase "compile" :goals ["compile"]}]}]
   ["org.mortbay.jetty:maven-jetty-plugin:6.1.10" {:configuration 
{:scanIntervalSeconds "10" :stopKey "foo" :stopPort ""}}]])

--

which isn't at all painful. It's early days yet, and neither IDE picks up the 
pom.clj, so I have to run the translator to get a pom.xml, but that's trivial - 
the command to produce pom.xml from pom.clj (and the translation is 
bidirectional) is this:

  translate pom.clj newpom.xml

assuming the polyglot maven translate command is on your path. Note that you 
can use either maven 2 or 3 to run the resultant pom.xml.

You can use either declarative or imperative code in the pom.clj i.e. you can 
call methods on the pom's object model to build up a project definition, which 
you can then run using polyglot maven or translate to a pom.xml which can then 
be run.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

On the other side, you have the customer and/or user, and they tend to do what 
we call "automating the pain." They say, "What is it we're doing now? How would 
that look if we automated it?" Whereas, what the design process should properly 
be is one of saying, "What are the goals we're trying to accomplish and how can 
we get rid of all this task crap?"
  -- Alan Cooper


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Choosing a Clojure build tool

2010-03-25 Thread Antony Blakey

On 26/03/2010, at 4:37 PM, Rayne wrote:

> I don't think I've ever seen a language in which part of the community
> shunned build tools written in the language itself. It's quite
> hilarious.

People aren't shunning anything because it's written in Clojure. I think that 
reinventing all that Maven can do, all of the IDE support, tools, documentation 
etc is misdirected effort. Especially given the appearance of polyglot Maven 
(Maven 3), which is Maven recast as a Java library that can be driven by 
languanges such as Clojure.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Every task involves constraint,
Solve the thing without complaint;
There are magic links and chains
Forged to loose our rigid brains.
Structures, structures, though they bind,
Strangely liberate the mind.
  -- James Fallen


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Choosing a Clojure build tool

2010-03-25 Thread Antony Blakey

On 26/03/2010, at 4:37 PM, Rayne wrote:

> I don't think I've ever seen a language in which part of the community
> shunned build tools written in the language itself. It's quite
> hilarious.

I've seen many examples where an overwhelming Not-Invented-Here attitude lead 
to failure.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Isn't it enough to see that a garden is beautiful without having to believe 
that there are fairies at the bottom of it too?
  -- Douglas Adams

-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Clojure/LLVM

2010-03-23 Thread Antony Blakey
Has anyone looked at driving LLVM from Clojure and then doing code generation 
to LLVM? I've had some experience doing it in a JIT context for VisualWorks 
Smalltalk, but I'd rather not reinvent the wheel. I'd love to be able to use 
Clojure on the iPad.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Did you hear about the Buddhist who refused Novocain during a root canal?
His goal: transcend dental medication.


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Why I have chosen not to employ clojure

2010-03-21 Thread Antony Blakey

On 22/03/2010, at 9:28 AM, e wrote:

> And don't get me started on trying to get emacs or vi all hooked up on my 
> mac.  I've never succeeded.

I'm about to use Clojure commercially, but it's been a frustrating exercise 
getting setup. I've ended up using LaClojure on IntelliJ, but that wasn't 
trivial because of a plugin versioning issue. CCW doesn't autoindent (I know 
that's coming) and I've been unable to get Enclojure's project REPL to work 
when using Clojure 1.2. I had a stretch of using almost Emacs exclusively for 
15 years, but compared to any IDE thats absolutely not newbie friendly, and not 
as good as an IDE IMO. In any case, the package manager hangs 80% of the time 
trying to grab stuff from the net.

IMHO a significant sociological issue is that so many clojure devs use Emacs, 
are coming at this from a 'rebirth-of-lisp' POV, and seem to have adopted the 
cultural values of Lisp when it comes to development practices. To be 
successful however Clojure needs to adopt 'mainstream' values - introduce just 
one 'different' thing i.e. the language, rather than expecting people to adopt 
both the language, and a different development environment / toolchain e.g. 
leiningen etc (which IMO is classic NIH). You can't cross the chasm with too 
much baggage. Personally I don't believe this will happen unless core 
developers use the tools and practices that users want to use. The end-user 
itches and the developer itches need to be aligned.

Just my $0.02.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

It's amazing that the one side of the conversation that survived is "I don't 
know art, but I know what I like". The reply from the artist was "Madam, so 
does a cow".
  -- Carl Kirkendall


-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.


Re: Leiningen, Clojure and libraries: what am I missing?

2010-03-04 Thread Antony Blakey

On 05/03/2010, at 5:29 AM, David Nolen wrote:

> On Thu, Mar 4, 2010 at 10:19 AM, Stuart Sierra  
> wrote:
> As many of you know, I've always been tepid on lein.  I'd rather go
> with Maven whole-hog, because that offers the most robust model for
> incorporating Java libraries.
> 
> If Lein evolves to to handle dependencies of dependencies and intelligently 
> generates the classpath based on these dependencies (instead of copying files 
> around) what advantage does Maven really have?

The tools (e.g. Archiva, Nexus et al), documentation, IDE support, integration 
with other languages e.g. mixed Java/Clojure/Scala/Groovy projects. The more 
clojure integrates with the existing ecosystem, the more likely it is to 
succeed, especially in a viral sense. This is the essence of clojure being a 
JVM language with great integration with Java.

Personally I wish that leiningen effort was instead put towards polyglot maven 
http://polyglot.sonatype.org/

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Nothing is really work unless you would rather be doing something else.
  -- J. M. Barre


-- 
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: Package manager proposal

2009-08-07 Thread Antony Blakey


On 07/08/2009, at 7:15 PM, Howard Lewis Ship wrote:

>
> Ruby and Gem is such great terminology, can we come up with something
> half as cool?

Closure and Resolution, are a pair of parallel hononymic puns.

Or Clojure/Seal - you close the package and seal it.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Nothing is really work unless you would rather be doing something else.
   -- J. M. Barre

--~--~-~--~~~---~--~~
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: Package manager proposal

2009-08-06 Thread Antony Blakey


On 06/08/2009, at 8:58 PM, Daniel wrote:

> Have a look at Buckminster: http://www.eclipse.org/buckminster/
> Not sure if it's going to work for non-JVM approaches (you'll probably
> have to code up a plugin of some sort), but it's a meta package
> manager, and can do more than just dependency resolution. For
> instance, you can specify, if you would like to have a dependency as a
> published Jar, or if you would like it to be checked from the version
> control system, so that you can fix bugs in the dependency.
> Note that this is the most under-documented project I have found in a
> long time.

This is the first I've heard of this project, but what about the 255  
page user guide available from: 
http://mirror.cc.vt.edu/pub/eclipse/tools/buckminster/doc/BuckyBook.pdf 
  ?

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

If at first you don’t succeed, try, try again. Then quit. No use being  
a damn fool about it
   -- W.C. Fields


--~--~-~--~~~---~--~~
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: Poll for a new name for clojure eclipse plugin 'clojure-dev'

2009-06-24 Thread Antony Blakey

eclisp :)

On 24/06/2009, at 11:05 AM, Matthew Erker wrote:

>
> I second that vote.
> (Though I prefer Clipse, which is somewhat taken.)
>
>
> On Jun 23, 6:47 pm, Rayne  wrote:
>> I vote Corona.
>
> >

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

There are two ways of constructing a software design: One way is to  
make it so simple that there are obviously no deficiencies, and the  
other way is to make it so complicated that there are no obvious  
deficiencies.
   -- C. A. R. Hoare



--~--~-~--~~~---~--~~
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: Clojure goes Git!

2009-06-16 Thread Antony Blakey


On 17/06/2009, at 10:58 AM, Antony Blakey wrote:

> http://www.pragprog.com/screencasts/v-scgithub/insider-guide-to-github

BTW: the first episode of this is free, and includes a section called  
'Send Pull Request'. It's purely about GitHub, rather than git itself.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Human beings, who are almost unique in having the ability to learn  
from the experience of others, are also remarkable for their apparent  
disinclination to do so.
   -- Douglas Adams



--~--~-~--~~~---~--~~
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: Clojure goes Git!

2009-06-16 Thread Antony Blakey


On 17/06/2009, at 10:58 AM, Antony Blakey wrote:

> For anyone looking for explanatory material on git, I have, and can  
> therefore recommend these:
>
> http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git
> http://www.pragprog.com/screencasts/v-scgithub/insider-guide-to-github
> https://peepcode.com/products/git

And I forgot I had this: https://peepcode.com/products/git-internals-pdf

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

On the other side, you have the customer and/or user, and they tend to  
do what we call "automating the pain." They say, "What is it we're  
doing now? How would that look if we automated it?" Whereas, what the  
design process should properly be is one of saying, "What are the  
goals we're trying to accomplish and how can we get rid of all this  
task crap?"
   -- Alan Cooper



--~--~-~--~~~---~--~~
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: Clojure goes Git!

2009-06-16 Thread Antony Blakey

For anyone looking for explanatory material on git, I have, and can  
therefore recommend these:

http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git
http://www.pragprog.com/screencasts/v-scgithub/insider-guide-to-github
https://peepcode.com/products/git

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Success is not the key to happiness. Happiness is the key to success.
  -- Albert Schweitzer


--~--~-~--~~~---~--~~
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: Clojure goes Git!

2009-06-16 Thread Antony Blakey


On 17/06/2009, at 10:37 AM, Mark Volkmann wrote:

> I think you've got that backwards. A "git push" is how I would ask  
> the remote repo to accept my changes. A "git pull" says I want to  
> update my local repo with changes someone made in the remote repo.

No, you can send a *request* to Rich, via GitHub, to pull from your  
repository. That's what a git pull *request* is - it's a request for  
someone else to git pull. A 'git pull' is, as you say, the command to  
pull commits into your repository and apply them, but that's not what  
Rich is talking about here.

A common GitHub workflow is to fork someone's repository, clone your  
fork, push your changes to your GitHub fork, and then send a pull  
request to the owner of the 'canonical' repository that you forked  
from, asking them to pull certain commits from your fork.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Human beings, who are almost unique in having the ability to learn  
from the experience of others, are also remarkable for their apparent  
disinclination to do so.
   -- Douglas Adams



--~--~-~--~~~---~--~~
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: Clojure goes Git!

2009-06-16 Thread Antony Blakey


On 17/06/2009, at 10:29 AM, Mark Volkmann wrote:

> On Tue, Jun 16, 2009 at 7:17 PM, Rich Hickey   
> wrote:
>
> Clojure and contrib repos are now on GitHub:
>
> http://github.com/richhickey/clojure
> http://github.com/richhickey/clojure-contrib
>
> In particular, please don't send pull requests via GitHub at this
> time.
>
> What's the reason to avoid "git pull"? Is there another way to get  
> updates?

To send a pull *request* in git is asking a remote repository to  
accept *your* changes. It's how you contribute, it's not about  
updating your copy of the repository.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

In anything at all, perfection is finally attained not when there is  
no longer anything to add, but when there is no longer anything to  
take away.
   -- Antoine de Saint-Exupery



--~--~-~--~~~---~--~~
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: ANN: Full, continuously updated documentation for clojure.contrib

2009-05-05 Thread Antony Blakey


On 05/05/2009, at 1:53 AM, Tom Faulhaber wrote:

> Antony: There is a way for authors to add links either to other pages
> in the wiki or externally. See DataLog and Monad for examples of how
> this works. One of the issues here is that doc strings are repurposed
> in a lot of ways and authors generally only want to write docs once so
> we need  to keep the formatting very simple and not assume that folks
> will be reading the docs on the wiki.

The problem with relying on links is that it separates the  
documentation from the code - the documentation is less likely to be  
written and maintained if it's not right there, with the source files,  
and that's ignoring the issues of tool support and version control.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

In anything at all, perfection is finally attained not when there is  
no longer anything to add, but when there is no longer anything to  
take away.
   -- Antoine de Saint-Exupery



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: ANN: Full, continuously updated documentation for clojure.contrib

2009-05-04 Thread Antony Blakey

This is really good.

Have you considered a mechanism for including richer documentation per  
contribution/namespace, ala javadocs package document e.g. html files  
with images etc ?

On 04/05/2009, at 4:11 PM, Tom Faulhaber wrote:

>
> Hello everybody,
>
> As many of you know, I have been working on a "contrib autodoc robot"
> for the last little while.
>
> It is now up and running and you can use the results here:
>
> http://code.google.com/p/clojure-contrib/wiki/OverviewOfContrib
>
> It includes:
> * An overview of each namespace in contrib (including the author and
> shortcut links to documentation for each of the functions).
> * An API page for each name space that includes the doc string for
> each function or variable in the namespace and a direct link to the
> source for that function or variable.
> * An index of all the documented functions and variables so that you
> can find them by name.
> * A JSON file that allows other tools to build off this information
> (at http://clojure-contrib.googlecode.com/svn/wiki/ApiDocIndex.json -
> still very much under development).
>
> Each page has a sidebar to allow for quick access from place to place.
>
> All the pages are stored in the wiki on the google code home for
> clojure-contrib. This is both a blessing and a curse, since the google
> code wiki is a little brain-dead. As a result, the formatting is not
> as awesome as I would like.
>
> The goal of this project is to make contrib a more open and accessible
> resource for the community. Please take advantage of this to see and
> understand the great stuff that folks have added to contrib for your
> programming pleasure. I will be making sure it is kept up-to-date
> (eventually that will be automated, but for now I have to type "ant"
> once in a while).
>
> To contrib authors: I have added metadata to your namespaces. Please
> update and correct it as you would like. The updates will be
> propagated to the site. Also, please review the doc for your
> contributions to make sure it is complete and correct in general. Let
> me know if anything doesn't seem to be going through the wringer
> correctly.
>
> Happy perusing!
>
> Tom
>
> >

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

In anything at all, perfection is finally attained not when there is  
no longer anything to add, but when there is no longer anything to  
take away.
   -- Antoine de Saint-Exupery



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-20 Thread Antony Blakey


On 21/04/2009, at 10:51 AM, Antony Blakey wrote:

> On 21/04/2009, at 10:22 AM, Rich Hickey wrote:
>
>> I'm unfamiliar with the POM version coordinate system - any hints?
>
> My comment was in support of Laurent's proposal. I'm a relative  
> maven newb, but this is my take:
>
> POMs use the concept of a coordinate, which is  
> ::: to identify a  
> particular artifact e.g. library. GroupId + Artifact Id is a  
> qualified name - think java package name. Packaging specifies how  
> the artifact is packaged e.g. jar or war, but it doesn't contribute  
> the id of the project. Version numbers are as you expect, but can be  
> suffixed with '-SNAPSHOT', which effectively creates a distinct  
> subspace of versions ordered by creation date. By depending on a  
> 'a.b.c-SNAPSHOT' version, you get the latest (by date) artifact  
> marked with 'a.b.c-SNAPSHOT'. When you release the artifact you  
> remove the '-SNAPSHOT'. In effect the suffix creates two different  
> versioning spaces, one of which is strictly determined by the  
> hierarchic numeric ordering, and another that allows duplicates  
> ordered by date within a specific hierarchically ordered version.  
> AFAIK, an 'a.b.c-SNAPSHOT' version will not satisfy a request for  
> 'a.b.c' e.g. -SNAPSHOT is not a further qualifier.

This BTW presumes a fairly simplistic dependency selection mechanism.  
In a previous life I did a lot of work with dependency algebras, and a  
far more powerful solution for managing configuration is to allow  
artifacts to be annotated with multidimensional versioning attributes  
organized by feature, using an ordered unification based configuration  
resolution mechanism. Somewhat like versioned requires/provides but  
with richer semantics.

My experience was such systems are too complicated for mass  
deployment, and their use needs to be motivated by a significant  
configuration management requirement, which is why I suggest sticking  
to the far simpler maven/ivy POM model.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

All that is required for evil to triumph is that good men do nothing.



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-20 Thread Antony Blakey


On 21/04/2009, at 10:22 AM, Rich Hickey wrote:

> I'm unfamiliar with the POM version coordinate system - any hints?

My comment was in support of Laurent's proposal. I'm a relative maven  
newb, but this is my take:

POMs use the concept of a coordinate, which is  
::: to identify a particular  
artifact e.g. library. GroupId + Artifact Id is a qualified name -  
think java package name. Packaging specifies how the artifact is  
packaged e.g. jar or war, but it doesn't contribute the id of the  
project. Version numbers are as you expect, but can be suffixed with '- 
SNAPSHOT', which effectively creates a distinct subspace of versions  
ordered by creation date. By depending on a 'a.b.c-SNAPSHOT' version,  
you get the latest (by date) artifact marked with 'a.b.c-SNAPSHOT'.  
When you release the artifact you remove the '-SNAPSHOT'. In effect  
the suffix creates two different versioning spaces, one of which is  
strictly determined by the hierarchic numeric ordering, and another  
that allows duplicates ordered by date within a specific  
hierarchically ordered version. AFAIK, an 'a.b.c-SNAPSHOT' version  
will not satisfy a request for 'a.b.c' e.g. -SNAPSHOT is not a further  
qualifier.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The project was so plagued by politics and ego that when the engineers  
requested technical oversight, our manager hired a psychologist instead.
   -- Ron Avitzur


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-20 Thread Antony Blakey


On 21/04/2009, at 5:12 AM, Laurent PETIT wrote:

> To give you more ideas, there is a convention in tools like maven/ivy
> that when you're starting the hack on a branch targeting some version
> M.m.r , you immediately rename the place in code where you maintain
> the version number by appending the -SNAPSHOT keyword.
> So every build that does not remove this -SNAPSHOT suffix can not be
> mistaken with the real release.
>
> Note that such tools are not as "structured" as you suggest and just
> reserve a single field for version numbering.
>
> I think it is a good idea to add this :status attribute. It could be
> used to mark progression towards a fully featured version, as well :
>
> { :major 1 :minor 0 :release 0 :status :SNAPSHOT }
> then
> { :major 1 :minor 0 :release 0 :status :RC1 }  (release candidate 1)
> then
> { :major 1 :minor 0 :release 0 :status :RC2 }  (release candidate 2)
> etc.
> and finally
> { :major 1 :minor 0 :release 0 :status :GA1 } (Global Availibility 1)


Given the likelihood that pom's will be used by some people, with  
maven or ivy, it would be good to have some scheme that maps to and  
from the pom version coordinate system in a transparent fashion,  
particularly in relation to this particular feature of that system.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Always have a vision. Why spend your life making other people’s dreams?
  -- Orson Welles (1915-1985)


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: On Stuart's Book

2009-04-20 Thread Antony Blakey


On 20/04/2009, at 6:13 PM, fft1976 wrote:

> On Apr 19, 3:20 am, Antony Blakey  wrote:
>
>> If I use Clojure commercially, I'll certainly pay for it.
>
> Please do not forget to pay for JVM, Java, Linux, tar and others.

When they start asking for donations, and don't use a GPL license  
(which is a form of license that in effect requires that I  
reciprocally donate my labour, which is fine), then maybe I'll  
consider it. Specifically, I don't personally use Linux (I'm on OSX),  
Sun owns the JVM/Java brand and makes money from it, and none of the  
things you list are exactly niche products like Clojure.

Or are you suggesting I shouldn't donate to Clojure? This is not the  
place for an o/s flamewar, so lets take this offlist.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

75% of statistics are made up on the spot.



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: On Stuart's Book

2009-04-19 Thread Antony Blakey


On 19/04/2009, at 6:32 PM, Rayne wrote:

> Oh, I apologize. I didn't realize that Rich wrote that for Stu's book.
> I paid more attention to the insides of the book than the foreward :p.
>
> On Apr 19, 1:44 am, George Jahad  wrote:
>> On Apr 18, 3:38 pm, Rayne  wrote:
>>
>>> So you want him to write something that Rich hasn't said on his
>>> website to market his book? :\ If not you're going to clarify a bit.
>>
>> Rayne, I think you are getting stuck on the very point I was.  It
>> feels very odd paying for Stuarts book, when Rich has done so much  
>> and
>> I've not given him a dime.

Why not? There's a donation link for Clojure. You don't need to feel  
odd.

>> It's only because Rich is strongly encouraging the book that I
>> purchased it, and I suspect I'm not the only person with that
>> discomfort

Just for a counter data point, I have no problem paying for  
documentation and books - something that most o/s/ software is  
completely lacking. It's the task that virtually no-one wants to do  
(with a few significant exceptions). I've bought every Scala book  
available, and I'll do the same for Clojure to encourage the market  
for books in niche markets.

If I use Clojure commercially, I'll certainly pay for it. Apart from  
the fact that I believe one should do so, it has the practical benefit  
of encouraging those who would do such work, especially in the field  
of development tools.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Did you hear about the Buddhist who refused Novocain during a root  
canal?
His goal: transcend dental medication.



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: On Stuart's Book

2009-04-18 Thread Antony Blakey


On 19/04/2009, at 8:08 AM, Rayne wrote:

>
> So you want him to write something that Rich hasn't said on his
> website to market his book? :\

But Rich has written that - it's from Rich's forward to Stuart's book.  
Am I misunderstanding your point?

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Nothing is really work unless you would rather be doing something else.
   -- J. M. Barre



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-18 Thread Antony Blakey


On 18/04/2009, at 5:38 PM, Konrad Hinsen wrote:

>
> On 18.04.2009, at 01:13, Dan wrote:
>
>> do you prefer to have some clojure users united against subversion,
>> or divided by Rich not having chosen their preferred DVCS
>> (Mercurial users vs Git users, not sure whether clojure needs those
>> kinds of nonsense internal wars in the community )
>>
>> We seem to be unanimous in preferring git.
>
> Not at all. I am a convinced Mercurial user, for example, and I don't
> even have git installed on my machine (I do have svn). However, I
> didn't participate in this debate because I think it is pointless.
> VCS issues are as much a matter of personal preference as technical
> merit. It's Rich who does all of the commits, so it's for him to  
> choose.

That's not the case for contrib.

If Rich is the only committer *and contributor* to core, then it's a  
moot point what VCS is used for core.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

A Buddhist walks up to a hot-dog stand and says, "Make me one with  
everything". He then pays the vendor and asks for change. The vendor  
says, "Change comes from within".




--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-17 Thread Antony Blakey


On 18/04/2009, at 11:51 AM, mikel wrote:

>> It's not clear how to use the stuff in clojure-contrib, which
>> certainly seems like the 'standard library' of useful tools that  
>> makes
>> clojure into something other than a lispy language using Java  
>> libraries.
>
>
> This is a good point. Using clojure.contrib is in fact extremely easy,
> but it's hard to tell that from the point of view of a new user. I was
> a new user recently enough to remember my initial confusion about how
> to set up my development environment and how to arrange it so that
> clojure.contrib was as readily accessible as it should be.

I wasn't talking about how to get it on the classpath so much as  
documentation for the individual components in clojure-contrib. IMO  
those components should be broken out, and documented.

I have commercial experience developing Smalltalk applications which  
has shown me that you *can* survive without extensive documentation  
iff you have fantastic code navigation and exploration. I'm not  
talking about find-doc et al, but some way of navigating live code. So  
when I say that documentation is necessary, I admit that one  
alternative would be a code navigation tool as part of the core. One  
way to do this would be an ultra-lightweight server as part of core  
that serves up a hyperlinked cross-ref view of the source, ala the  
Smalltalk Browser. I don't think this should be relegated to the  
individual IDEs.

The weakness of the Smalltalk approach as compared to javadoc (say) is  
that it's easy to cop out and regard functional-level documentation is  
being sufficient, whereas you also require architectural/expository  
documentation, and that really needs to be rich e.g. package level  
javadoc as opposed to class/method level documentation. I think some  
mechanism to do that is required.

My overall point being that there is a conflict in knowing that  
documentation is absolutely required for mass-acceptance and arms- 
length use and yet knowing that documentation generally won't be  
written and even when it is, it needs to be integrated.

IMO javadoc is a significant reason for the success of java, and  
something at least as good, and preferably live and reflective, is  
required for Clojure.

I get the feeling that for the purposes of a book about the language,  
1.0 is pretty much ready now, although wasn't there something about  
method dispatch / hierarchies that Rich was looking at?

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Hi, I'd like to do $THING. I know that $SOLUTION_A and $SOLUTION_B  
will do it very easily and for a very reasonable price, but I don't  
want to use $SOLUTION_A or $SOLUTION_B because $VAGUE_REASON and  
$CONTRADICTORY_REASON. Instead, I'd like your under-informed ideas on  
how to achieve my $POORLY_CONCEIVED_AMBITIONS using Linux, duct tape,  
an iPod, and hours and hours of my precious time.
   -- Slashdot response to an enquiry



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: The Path to 1.0

2009-04-17 Thread Antony Blakey

As a lurker, considering Clojure for a project, the thing that is  
giving me pause isn't 1.0 per se, but the combination of a good  
library mechanism and documentation. I have Stuart's book, and I agree  
in the strongest possible terms that it should be a book explicitly  
about a stable Clojure 1.0. The choice for me is between Scala and  
Clojure, and the languages themselves are not a discriminator - it's  
the environments around the languages that determine the outcome.

It's not clear how to use the stuff in clojure-contrib, which  
certainly seems like the 'standard library' of useful tools that makes  
clojure into something other than a lispy language using Java libraries.

Please don't under-estimate the extent to which good documentation, an  
obvious and clean code base (which clojure-contrib isn't) and a  
documented story for packaging and managing extensions/contributions,  
gives the impression of quality, at least with respect to the kind of  
'quality' that comforts and convinces arms-length users. The website  
is quite good in some of those respects for clojure core.

Also +1 for moving to git and github - in my experience it motivates  
contributions/contributors because it is such a low-barrier platform  
for collaborative/experimentation.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The ultimate measure of a man is not where he stands in moments of  
comfort and convenience, but where he stands at times of challenge and  
controversy.
   -- Martin Luther King



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Has anyone on this group ever tried Forth?

2009-04-11 Thread Antony Blakey


On 11/04/2009, at 12:53 PM, e wrote:

> J seems cool, and, from what I understand, is a descendant of  
> forth.  How does Factor compare to J?

J is a descendent of APL, done by the late Ken Iverson, the creator of  
APL. A big change is the substitution of ASCII for the traditional APL  
operators. More convenient, but for me it loses some of the charm of  
APL.

Not at all Lispy.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

A priest, a minister and a rabbi walk into a bar. The bartender says  
"What is this, a joke?"



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Has anyone on this group ever tried Forth?

2009-04-10 Thread Antony Blakey


On 10/04/2009, at 4:43 PM, CuppoJava wrote:

>
> Hi everyone,
> I was browsing through webpages and the language Forth caught my eye.
> Reading through it's supposed advantages it sounded very interesting,
> and I was wondering if anyone here has any experience with it, and can
> comment.
>
> I'm asking on the Clojure forum instead of the Forth forum because I
> agree with the programming values that Clojure emphasizes, and would
> like to hear opinions from people with similar values to myself.
>
> I'm most interested in it's productivity aspect. (ie. how quick can I
> get real work done)

If you are interested in Forth you should probably check Factor at 
http://factorcode.org/

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

It is no measure of health to be well adjusted to a profoundly sick  
society.
   -- Jiddu Krishnamurti



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Scala vs Clojure

2009-03-31 Thread Antony Blakey


On 01/04/2009, at 1:26 PM, Rayne wrote:

>
> Unless they slowed down, the pace in which Enclojure was improving
> would put me dead on.

Neither the site nor the mailing list shows a lot of activity - it's  
not dead, but it is taking a long time compared to the IntelliJ  
support, which was my point.

> I personally use IntelliJ IDEA. But who says I
> paid for it?

I'm not sure what point you are making.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Don't anthropomorphize computers. They hate that.



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Scala vs Clojure

2009-03-31 Thread Antony Blakey


On 01/04/2009, at 10:01 AM, e wrote:

> but the InteliJ IDE isn't free, is it?

So what? I'm a professional developer. I make money using these tools.  
The money people pay for IntelliJ is one reason that the Scala support  
in IntelliJ is more ambitious and why the IntelliJ Clojure plugin is  
more advanced. I'd happily pay for NetBeans or Eclipse, and/or support  
for Clojure and Scala. I buy a lot of software, and when I use good O/ 
S software, I donate $ to support it e.g. Firebug.

IntelliJ is cheap for a personal license (USD$249). Even VisualWorks  
Smalltalk, for which I pay 5% of my gross billings, is good deal  
because the productivity benefits pay for themselves.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

He who would make his own liberty secure, must guard even his enemy  
from repression.
   -- Thomas Paine



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Fresh Clojure Tutorial

2009-03-31 Thread Antony Blakey


On 01/04/2009, at 10:47 AM, Laurent PETIT wrote:

> Something that can be thought of as "workable specs" for the GUI,  
> where one does not have to switch language from one abstraction  
> level to the other.

You should have a look at the Scala wrapping of SWT.

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

A Buddhist walks up to a hot-dog stand and says, "Make me one with  
everything". He then pays the vendor and asks for change. The vendor  
says, "Change comes from within".




--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Scala vs Clojure

2009-03-31 Thread Antony Blakey


On 28/03/2009, at 5:21 PM, Rayne wrote:

> I'd say Enclojure is close to
> production-ready.

 From my playing with it, plus the list of things not yet done, I  
don't think this is true. The IntelliJ clojure support seems more  
advanced right now, and I'm starting to use that in production. IMO  
the new NetBeans 6.7 L&F on OSX now looks better than any other java  
IDE on OSX (but enclojure doesn't run on it). If enclojure did  
formatting and ran on 6.7 I'd probably choose that for Clojure  
development, although another consideration is that if you want to do  
mixed Scala/Clojure development, IntelliJ's Scala support has  
considerably loftier goals than Eclipse/NetBeans e.g. first-class  
support for the language model wrt refactoring etc.

Antony Blakey
--
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Lack of will power has caused more failure than lack of intelligence  
or ability.
  -- Flower A. Newhouse


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: Namespaces, use, and refer

2009-03-02 Thread Antony Blakey


On 02/03/2009, at 7:23 PM, Konrad Hinsen wrote:

> For namespaces other than clojure.core, an acceptable solution is to
> use the :only keyword in the :use clause of the ns macro. This just
> requires a bit more work in typing, but I don't see any other
> potential difficulty. I am currently converting all my code to
> use :only, and I haven't had any bad surprises until now. For
> clojure.core, listing all imported symbols explicitly would be a real
> pain, but I don't see any other simple solution. I just hope someone
> else does :-)

I'm a clojure newb, but couldn't you reflect on a given version to  
generate an import file that used :only to import every name visible  
in that version? Then you could import that file, which would be a  
version constant (although I'm not clear yet if clojure allows  
transitive imports). It should be easy to generate such a file  
privately for any given snapshot (although I imagine it would be best  
as an official version artifact).

Alternatively of course every name could be tagged with version  
metadata and import enhanced to take a version spec, but that seems  
far more intrusive (and in any case precisely equivalent to my first  
suggestion).

Antony Blakey
-
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

There are two ways of constructing a software design: One way is to  
make it so simple that there are obviously no deficiencies, and the  
other way is to make it so complicated that there are no obvious  
deficiencies.
   -- C. A. R. Hoare



--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---