Re: design patterns for event driven applications

2009-03-14 Thread Christophe Grand

Anatoly Yakovenko a écrit :
> basically i am dealing with a 3rd party library, (interactive brokers
> tws api), that takes an interface with lots of different methods that
> it calls when an event occurs.  like received market data, received
> order, etc...  It provides another interface that basically generates
> these events.
>
> Some of the events are statefull, like i canceled an order, i get a
> response that the order cancel was received, and then i get a
> confirmation that the order was canceled.
>
> If i was implementing this in haskell, (i am at the moment, but
> writing the bindings is a pain in the arse), i would pump all the
> events into a Chan, essentially a lazy evaluated sequence used to get
> stuff from IO, and write a parser on top of that.  

This first part is rather easy to port to Clojure, use a BlockingQueue 
to buffer events received by the callback interface:
  (def #^java.util.concurrent.BlockingQueue q 
(java.util.concurrent.LinkedBlockingQueue.))
and in your consumer thread, turn it into a sequence:
  (def s (repeatedly #(.take q))) ; (EOS handling is left as an exercise)

For the parser part, I'm afraid there's no such thing right now. Maybe 
can you build upon Konrad's monads library?

HTH Christophe


-- 
Professional: http://cgrand.net/ (fr)
On Clojure: http://clj-me.blogspot.com/ (en)



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



Clojure, swank-clojure, and Debian

2009-03-14 Thread Javier

Hello, I'm trying to start learning Clojure, but I fail miserably at
some point trying to get a decent IDE to work.

- First, Enclojure for Netbeans has lot of bugs, it is inusable for me
at this stage.
- I'm not used to Eclipse nor Intellijea, so I discard both.
- I'm used to Emacs, and have used Slime and SBCL with success before,
but I must admit that it was too easy: all I had to do is apt-get
install sbcl slime.

So I found this guide:

http://riddell.us/clojure/

It is for Ubuntu, but I do not see that the process could not be the
same for Debian.

I followed the entire guide, checked and rechecked everything. But
when I want to start slime, I get:

(add-classpath "file:home/javi/program/clojure/swank-clojure/")

(require 'swank.swank)

(swank.swank/ignore-protocol-version "2009-03-09")

(swank.swank/start-server "/tmp/slime.20900" :encoding "iso-latin-1-
unix")

Clojure
user=> nil
user=> java.lang.Exception: Unable to resolve symbol: lazy-seq in this
context (core.clj:70)
user=> java.lang.Exception: No such var: swank.swank/ignore-protocol-
version (NO_SOURCE_FILE:5)
user=> java.lang.Exception: No such var: swank.swank/start-server
(NO_SOURCE_FILE:7)
user=>


And Slime refuses to full start.

I am just in the point of giving up and forget Clojure, so please help
me.
What I missed?

Thank you.
--~--~-~--~~~---~--~~
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: VimClojure 2

2009-03-14 Thread Meikel Brandmeyer

Hello Mark and fellow Vimmers,

Am 14.03.2009 um 03:56 schrieb Mark Feeney:


Anyway, user error, as you predicted above :)  Things are working much
better now.


I hope I didn't sound too harsh! If so, I apologise!

But this is really my experience from my daily life (also on the real  
user side,
not only developer side)! Pick an arbitrary topic and the chances are  
large,

that it is a problem due to misuse by the user.

* Namespaces
* Exceptions
* Macros (one of my favourites)
* Eval (another one of my favourites)
* Excel
* CD players (tapping the tray instead of using the close button)
* ...

Of course, software can be made more robust, but for a hobby project,
like VimClojure, I think there can be some level of goodwill expected
from the user that the software is not perfect.

And while writing this I noticed, that \ef actually tries to require  
the namespace
when it does not exist. So VimClojure already tries as best as  
possible to be

robust here. :)

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: Clojure, swank-clojure, and Debian

2009-03-14 Thread Javier

Ok, I can answer myself, thanks to maacl in the IRC:

Download clojure-mode:

git clone git://github.com/jochu/clojure-mode.git

And put this:

(add-to-list 'load-path "/path/to/clojure-mode")
(require 'clojure-mode)

in .emacs, restart, and M-x clojure-install.

Really fantastic.

The guide I tried to follow is just broken.

Thank you.


On 14 mar, 10:22, Javier  wrote:
> Hello, I'm trying to start learning Clojure, but I fail miserably at
> some point trying to get a decent IDE to work.
>
> - First, Enclojure for Netbeans has lot of bugs, it is inusable for me
> at this stage.
> - I'm not used to Eclipse nor Intellijea, so I discard both.
> - I'm used to Emacs, and have used Slime and SBCL with success before,
> but I must admit that it was too easy: all I had to do is apt-get
> install sbcl slime.
>
> So I found this guide:
>
> http://riddell.us/clojure/
>
> It is for Ubuntu, but I do not see that the process could not be the
> same for Debian.
>
> I followed the entire guide, checked and rechecked everything. But
> when I want to start slime, I get:
>
> (add-classpath "file:home/javi/program/clojure/swank-clojure/")
>
> (require 'swank.swank)
>
> (swank.swank/ignore-protocol-version "2009-03-09")
>
> (swank.swank/start-server "/tmp/slime.20900" :encoding "iso-latin-1-
> unix")
>
> Clojure
> user=> nil
> user=> java.lang.Exception: Unable to resolve symbol: lazy-seq in this
> context (core.clj:70)
> user=> java.lang.Exception: No such var: swank.swank/ignore-protocol-
> version (NO_SOURCE_FILE:5)
> user=> java.lang.Exception: No such var: swank.swank/start-server
> (NO_SOURCE_FILE:7)
> user=>
>
> And Slime refuses to full start.
>
> I am just in the point of giving up and forget Clojure, so please help
> me.
> What I missed?
>
> Thank you.
--~--~-~--~~~---~--~~
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: What is Clojure NOT good for?

2009-03-14 Thread André Thieme

On 6 Mrz., 17:07, lprefonta...@softaddicts.ca wrote:

> I know some business where HR and IT managers come back with this mantra
> that they can find Java and .Net coders, anything else is too risky or
> too scarce on the market.

Right. I am sure a lot of those managers really think that way.
If they go the Java route, then it will be no problem to hire
more developers.

They just overlook that when they write their programs in Lisp,
then they won’t need as many devs.
I don’t want to go into numbers, as it depends on the specific
requirements. But in general it is true that a good bunch less
developers can do with Lisp what more programmers can do with
Java.

> Many HR departments do not understand anything about
> software development in general and the profile of individuals needed.

It’s always good to have a Lisper as the head of the
software department.
--~--~-~--~~~---~--~~
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: What is Clojure NOT good for?

2009-03-14 Thread André Thieme

On 6 Mrz., 19:21, Phil Hagelberg  wrote:

> The only other thing I can think of is short-lived command-line tools
> that need subsecond launch times.

The Lisp repl is the command-line. There is no starting time
of the JVM involved.
--~--~-~--~~~---~--~~
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: filter1 interesting?

2009-03-14 Thread André Thieme

On 9 Mrz., 16:34, Stuart Sierra  wrote:
> On Mar 8, 3:20 pm, André Thieme  wrote:
>
> > I regularily stumble upon the (first (filter predicate coll)) pattern.
> > Maybe we can add a filter1 for that?
> > In the Clojure project itself I found this two times, in core.clj for
> > the ns macro,
> > and in genclass.clj in find-field.
> > Also in the clojure-contrib project it shows up two times (again in
> > the core.clj
> > of Clojure for CLR, and in clojurescript.clj).

> I do use this pattern, but if I were naming it I think I'd call it
> "find-first".  But that's scarcely shorter than "(first (filter ...)",
> which is why I've never actually defined it.

Yesterday someone else suggested to eliminate the (first (filter ..))
pattern. In Common Lisp it is called FIND. But that is already taken.
I agree with you that find-first is not really much easier. It reduces
indeed some complexity, as it eliminates one level of nesting, but to
make it useful it would need a short name.
Christophe Grand suggest (seek ...), which I personally like.
--~--~-~--~~~---~--~~
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: Promise for absense of side effects

2009-03-14 Thread André Thieme

On 9 Mrz., 20:42, Raoul Duke  wrote:
> ok oops that didn't work, sorry -- i mean to send this link:
>
> http://www.ccs.neu.edu/home/samth/typed-scheme/manual/

That is not too far away of what I had in mind.
What I would like is if it were even a bit more optional.
Typed Scheme allows to have a specific module statically
typed without having to touch the others. I would like to
go even further, by allowing in the same file/module to
have code as we have it today, and code for which the
compiler can give us support by doing compile time checks.

At two places we would need a hook to add typing
information. This could happen via metadata. Those places
are: variable binding (such as def, let or function
parameters), and the return values of functions.
A global or namespace based switch would be also a nice
thing to have.
--~--~-~--~~~---~--~~
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: Promise for absense of side effects

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 12:38 schrieb André Thieme:


At two places we would need a hook to add typing
information. This could happen via metadata. Those places
are: variable binding (such as def, let or function
parameters), and the return values of functions.
A global or namespace based switch would be also a nice
thing to have.


I remember some presentation of someone doing this for,
I think, Python. There you hint things, where the type is
known and the compiler inferred the rest as far as possible.
What cannot be inferred was cast to a special type called
"dynamic". So this roughly worked like type hints in Clojure.
Just with a bit more inference and "dynamic" meaning
"reflection".

However, I can't seem to find the video anymore. I think
it was a Google techtalk

How something like this could be implemented, where
some types life in the Java class space while others
exist in the Clojure map space I'm not that of a specialist
for language implementation. :)

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread stephaner

When I try to read a clojure source file, I have the following
exception:

Error detected while processing function
vimclojure#ExecuteNailWithInput:
line   23:
E605: Exception not caught: Couldn't execute Nail! /home/steph/src/
vimclojure
-2.0.0/ng de.kotka.vimclojure.nails.NamespaceOfFile 5_LoadFTPlugin:
line   17:
E170: Missing :endfor


The nailgun server is running.

Anyone has a clue?

Thank you,

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



Dynamic loading of code (a la Python)?

2009-03-14 Thread Rock

Hi all. I've been working on a piece of code (an xml-rpc server) in
Python (actually Jython), and one of its features is the capability of
loading modules (connectors in Java) during runtime. Not only are
these modules dynamically loaded on request (their names passed as
arguments in a string), but they are only visible in the lexical scope
of the specific method/function, the resources being released as soon
as that same scope is left.

Now, I would love to recode this stuff in Lisp, especially Clojure.
But is it possible to pull this off? From what I've been reading, it
actually doesn't seem like it.

Rock

--~--~-~--~~~---~--~~
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: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 13:33 schrieb stephaner:


When I try to read a clojure source file, I have the following
exception:

Error detected while processing function
vimclojure#ExecuteNailWithInput:
line   23:
E605: Exception not caught: Couldn't execute Nail! /home/steph/src/
vimclojure
-2.0.0/ng de.kotka.vimclojure.nails.NamespaceOfFile 5_LoadFTPlugin:
line   17:
E170: Missing :endfor


The nailgun server is running.

Anyone has a clue?


Please check the following:

- The ng *server* needs the following in the Classpath:
  vimclojure.jar, clojure.jar, clojure-contrib.jar

- Does running the client manually work?
  ng de.kotka.vimclojure.nails.NamespaceOfFile < your_src.clj
  Does this give an exception?

There were several threads in the past days just about this problem.
Maybe check for them also.

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: filter1 interesting?

2009-03-14 Thread e
>
> Christophe Grand suggest (seek ...), which I personally like.
>
> IMHO
seek is pretty good for a number of reasons: short, implies first result.
Minor objection would be that folks may not think it's what they want
because of how it's used in C where they'd expect it to take a number of
bytes and a block. (filter-one ...) or (find-first ...) are both ok to me
... and preferable to (first (filter ...)) the latter being an idiom you
have to discover on your own.  Another very minor problem with the idiom is
that the docs say that filter returns a lazy sequence, but it doesn't say
that the order has to be the same as how the original sequence would be
consumed.  Having an actual function makes the concept of "first" concrete.
It unties it from filter having to be the implementation.

yeah (seek ...) is pretty good.

--~--~-~--~~~---~--~~
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: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread stephaner

Hi Mr Brandmeyer,

The server is running:
NGServer started on 127.0.0.1, port 2113.


Here is the output using the client alone:
~/src/vimclojure-2.0.0$ ./ng de.kotka.vimclojure.nails.NamespaceOfFile
< /home/steph/testsrc/test.clj java.lang.ClassNotFoundException:
de.kotka.vimclojure.nails.NamespaceOfFile
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

Thank you,

Stephane


On Mar 14, 8:49 am, Meikel Brandmeyer  wrote:
> Hi,
>
> Am 14.03.2009 um 13:33 schrieb stephaner:
>
>
>
> > When I try to read a clojure source file, I have the following
> > exception:
>
> > Error detected while processing function
> > vimclojure#ExecuteNailWithInput:
> > line   23:
> > E605: Exception not caught: Couldn't execute Nail! /home/steph/src/
> > vimclojure
> > -2.0.0/ng de.kotka.vimclojure.nails.NamespaceOfFile  > Error detected while processing /home/steph/.vim/ftplugin/clojure.vim:
> > line  131:
> > E171: Missing :endif
> > Error detected while processing function 5_LoadFTPlugin:
> > line   17:
> > E170: Missing :endfor
>
> > The nailgun server is running.
>
> > Anyone has a clue?
>
> Please check the following:
>
> - The ng *server* needs the following in the Classpath:
>    vimclojure.jar, clojure.jar, clojure-contrib.jar
>
> - Does running the client manually work?
>    ng de.kotka.vimclojure.nails.NamespaceOfFile < your_src.clj
>    Does this give an exception?
>
> There were several threads in the past days just about this problem.
> Maybe check for them also.
>
> Sincerely
> Meikel
>
>  smime.p7s
> 5KViewDownload
--~--~-~--~~~---~--~~
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: VimClojure 2

2009-03-14 Thread Albert Cardona


Hi Meikel,

Regarding namespaces, I would appreciate help understanding what looks
like a heisenbug.

I have a file at t2/data/core.clj, with namespace t2.data.core
The namespace (ns t2.data.core) does not :import or :use anything.
I open such file by :edit t2/data/core.clj
When switching to another buffer and then back, sometimes it complains
with a long error, the now famous line 23 nail error. But sometimes it
does not (?). Restarting vim solves this problem, until it catches on
again. It would help a lot if the error was more specific: which
expression failed? What was the nailgun trying to do? The current error
basically says nothing other than "an error ocurred in the nailgun".
The shell where the nailgun server was opened doesn't print anything. It
would be a good place to print this nailgun server indigestions.

Also to note here that these multiline nailgun errors are a pain to have
in the vim minibuffer, for one has to press return several times until
the entire message of the error is printed in full. A Scratch buffer or
the shell where the nailgun runs would be a better place, leaving
perhaps a single line such as "Error: check ng shell" in the minibuffer.


Regarding the \sr Repl:

On occasions, it throws an error, altough the Scratch buffer opens
anyway with an inactive Repl in it (the cursor is at the top instead of
after the prompt, and no expressions may be entered with return.) If I
close it with esc :bd, and retype \sr, then the Repl opens fine.  It's
puzzling. And happens at random times.

Also: the \sr Repl becomes (again, sometimes) irresponsive (i.e. doesn't
evaluate anything) when I accidentally press control+w control+w while
in insert mode, which deletes one or two lines, depending upon when I
realize so. What is the proper way to reenable it, short of :bd and \sr
again?


It's true that most errors are on the user side. I've experienced this
both as user and as developer receiving bizarre complains from users of
my software. I my experience, detailed how-tos with detailed, precise
examples of operation go a very long way, much more than any description
in a manual.

Thanks for VimClojure. I'm loving it despite all the unexpected
reactions.

Albert
-- 
Albert Cardona
http://albert.rierol.net


--~--~-~--~~~---~--~~
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: filter1 interesting?

2009-03-14 Thread Craig Andera

What about overloading first to accept a predicate?

(first even? (iterate inc 1)) => 2

On Sat, Mar 14, 2009 at 8:58 AM, e  wrote:
>
>>
>> Christophe Grand suggest (seek ...), which I personally like.
>>
> IMHO
> seek is pretty good for a number of reasons: short, implies first result.
> Minor objection would be that folks may not think it's what they want
> because of how it's used in C where they'd expect it to take a number of
> bytes and a block. (filter-one ...) or (find-first ...) are both ok to me
> ... and preferable to (first (filter ...)) the latter being an idiom you
> have to discover on your own.  Another very minor problem with the idiom is
> that the docs say that filter returns a lazy sequence, but it doesn't say
> that the order has to be the same as how the original sequence would be
> consumed.  Having an actual function makes the concept of "first" concrete.
> It unties it from filter having to be the implementation.
>
> yeah (seek ...) is pretty good.
>
>
>
> >
>

--~--~-~--~~~---~--~~
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: VimClojure 2

2009-03-14 Thread Albert Cardona

Meikel,

Another error I don't understand:

I have called :split so there are two buffers visible.
Then I shift+V and y to copy a line.
Then I control+w j to go to the upper window.
Then I p, and a new line pastes, not what I copied.
To paste, I have to "0p, i.e. paste the last user-yanked data.

This error was present as well in version 1.2 of VimClojure.


And yet another unexpected behaviour: when switching windows
with control+w j or k,  the current buffer is resized by one line,
and the other shrinked by one line as well, of course. Why?

Albert

-- 
Albert Cardona
http://albert.rierol.net


--~--~-~--~~~---~--~~
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: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 14:50 schrieb stephaner:


Here is the output using the client alone:
~/src/vimclojure-2.0.0$ ./ng de.kotka.vimclojure.nails.NamespaceOfFile
< /home/steph/testsrc/test.clj java.lang.ClassNotFoundException:
de.kotka.vimclojure.nails.NamespaceOfFile
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

Thank you,


That means, that your vimclojure.jar is broken. It contains the
nailgun server (since it is running) but not the generated class
files from clojure. I just cut'n'pasted your command and it works
for me.

Please rebuild your jar and check whether there are failures
in the process. You can also check the content of the jar with
the jar command: jar tf vimclojure.jar.

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread Yasuto TAKENAKA

hi
I have soluved the same problem. the conclusion is when ant made
vimclojure.jar, ant failed compiling it. Please check local.propaties
out. or you modify 'CLOJURE', 'CLOJURECONTRIB' and 'VIMCOLJUREHOME' of
my installer.sh. This script works on sh/bash/zsh ...
 installer.sh
#!/bin/sh
# installer.sh - a simple vimclojure installer.
# Please rewrite CLOJURE, CLOJURECONTRIB and VIMCLOJUREHOME.
#   The example is that CLOJURE is ~/opt/clojure/clojure.jar,
#   that CLOJURECONTRIB is ~/opt/clojure-contrib/clojure-contrib.jar
#   and that VIMCLOJUREHOME is ~/opt/vimclojure .

CLOJURE=${HOME}/opt/clojure/clojure.jar
CLOJURECONTRIB=${HOME}/opt/clojure-contrib/clojure-contrib.jar
NAILGUNCLIENT=ng
VIMCLOJUREHOME=${HOME}/opt/vimclojure

cp -r {autoload,doc,ftdetect,ftplugin,indent,syntax} ${HOME}/.vim
ant -Dnailgun-client=${NAILGUNCLIENT} -Dclojure.jar=${CLOJURE} -
Dclojure-contrib.jar=${CLOJURECONTRIB}

# ./ngserver is a shell script for clojure server of vimclojure.

echo '#!/bin/sh' > ngserver
echo java -cp ${CLOJURE}:${CLOJURECONTRIB}:${VIMCLOJUREHOME}/
vimclojure.jar com.martiansoftware.nailgun.NGServer 127.0.0.1 >>
ngserver
chmod 755 ngserver

# If 'ng' don't add on $PATH, please erase '#' of the below.

# echo let vimclojure#NailgunClient=\"${VIMCLOJUREHOME}/ng\">> $
{HOME}/.vimrc

-- end of the script

On Mar 14, 10:50pm, stephaner  wrote:
> Hi Mr Brandmeyer,
>
> The server is running:
> NGServer started on 127.0.0.1, port 2113.
>
> Here is the output using the client alone:
> ~/src/vimclojure-2.0.0$ ./ng de.kotka.vimclojure.nails.NamespaceOfFile
> < /home/steph/testsrc/test.clj java.lang.ClassNotFoundException:
> de.kotka.vimclojure.nails.NamespaceOfFile
> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>
> Thank you,
>
> Stephane
>
> On Mar 14, 8:49 am, Meikel Brandmeyer  wrote:
>
> > Hi,
>
> > Am 14.03.2009 um 13:33 schrieb stephaner:
>
> > > When I try to read a clojure source file, I have the following
> > > exception:
>
> > > Error detected while processing function
> > > vimclojure#ExecuteNailWithInput:
> > > line   23:
> > > E605: Exception not caught: Couldn't execute Nail! /home/steph/src/
> > > vimclojure
> > > -2.0.0/ng de.kotka.vimclojure.nails.NamespaceOfFile  > > Error detected while processing /home/steph/.vim/ftplugin/clojure.vim:
> > > line  131:
> > > E171: Missing :endif
> > > Error detected while processing function 5_LoadFTPlugin:
> > > line   17:
> > > E170: Missing :endfor
>
> > > The nailgun server is running.
>
> > > Anyone has a clue?
>
> > Please check the following:
>
> > - The ng *server* needs the following in the Classpath:
> >vimclojure.jar, clojure.jar, clojure-contrib.jar
>
> > - Does running the client manually work?
> >ng de.kotka.vimclojure.nails.NamespaceOfFile < your_src.clj
> >Does this give an exception?
>
> > There were several threads in the past days just about this problem.
> > Maybe check for them also.
>
> > Sincerely
> > Meikel
>
> >  smime.p7s
> > 5KViewDownload
--~--~-~--~~~---~--~~
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: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread stephaner

Hi again,

I did try using your install script, build with ant seems ok, but
still get the same error:

 ./ng de.kotka.vimclojure.nails.NamespaceOfFile < /home/steph/testsrc/
test.clj
java.lang.ClassNotFoundException:
de.kotka.vimclojure.nails.NamespaceOfFile
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.martiansoftware.nailgun.NGSession.run(Unknown Source)


st...@stephane-laptop:~/src/vimclojure-2.0.0$ jar tf vimclojure.jar
META-INF/
META-INF/MANIFEST.MF
README.txt
LICENSE.txt
de/
de/kotka/
de/kotka/vimclojure/
de/kotka/vimclojure/backend.clj
de/kotka/vimclojure/gencompletions.clj
de/kotka/vimclojure/nails.clj
de/kotka/vimclojure/repl.clj
de/kotka/vimclojure/util.clj
de/kotka/vimclojure/gencompletions$_main__5.class
de/kotka/vimclojure/gencompletions$with_out_file__2.class
de/kotka/vimclojure/gencompletions.class
de/kotka/vimclojure/gencompletions__init.class
de/kotka/vimclojure/util$fn__61.class
de/kotka/vimclojure/util$fn__64.class
de/kotka/vimclojure/util$fn__67$fn__70.class
de/kotka/vimclojure/util$fn__67.class
de/kotka/vimclojure/util$fn__75.class
de/kotka/vimclojure/util$fn__78.class
de/kotka/vimclojure/util$fn__81.class
de/kotka/vimclojure/util$fn__87.class
de/kotka/vimclojure/util$fn__90.class
de/kotka/vimclojure/util$fn__93.class
de/kotka/vimclojure/util$fn__96.class
de/kotka/vimclojure/util$print_usage__36.class
de/kotka/vimclojure/util$splitted_match__24$fn__26.class
de/kotka/vimclojure/util$splitted_match__24$fn__30.class
de/kotka/vimclojure/util$splitted_match__24.class
de/kotka/vimclojure/util$str_cat__17.class
de/kotka/vimclojure/util$str_cut__10.class
de/kotka/vimclojure/util$str_wrap__13.class
de/kotka/vimclojure/util$type_of_completion__84.class
de/kotka/vimclojure/util$with_command_line_STAR___40$fn__44.class
de/kotka/vimclojure/util$with_command_line_STAR___40.class
de/kotka/vimclojure/util$with_command_line__55$fn__57.class
de/kotka/vimclojure/util$with_command_line__55.class
org/
org/apache/
org/apache/tools/
org/apache/tools/ant/
org/apache/tools/ant/ExitException.class
com/
com/martiansoftware/
com/martiansoftware/nailgun/
com/martiansoftware/nailgun/builtins/
com/martiansoftware/nailgun/Alias.class
com/martiansoftware/nailgun/AliasManager.class
com/martiansoftware/nailgun/LongUtils.class
com/martiansoftware/nailgun/NGConstants.class
com/martiansoftware/nailgun/NGContext.class
com/martiansoftware/nailgun/NGExitException.class
com/martiansoftware/nailgun/NGInputStream.class
com/martiansoftware/nailgun/NGOutputStream.class
com/martiansoftware/nailgun/NGSecurityManager.class
com/martiansoftware/nailgun/NGServer$NGServerShutdowner.class
com/martiansoftware/nailgun/NGServer.class
com/martiansoftware/nailgun/NGSession.class
com/martiansoftware/nailgun/NGSessionPool.class
com/martiansoftware/nailgun/NailStats.class
com/martiansoftware/nailgun/ThreadLocalInputStream.class
com/martiansoftware/nailgun/ThreadLocalPrintStream.class
com/martiansoftware/nailgun/builtins/DefaultNail.class
com/martiansoftware/nailgun/builtins/NGAlias.class
com/martiansoftware/nailgun/builtins/NGClasspath.class
com/martiansoftware/nailgun/builtins/NGServerStats.class
com/martiansoftware/nailgun/builtins/NGStop.class
com/martiansoftware/nailgun/builtins/NGVersion.class
com/martiansoftware/nailgun/builtins/builtins.properties
com/martiansoftware/nailgun/nailgun-version.properties

My java version on Ubuntu 8.10:
java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)

Is it possible it's a security acces of the ng server?

Thank you,

Stéphane
--~--~-~--~~~---~--~~
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: Promise for absense of side effects

2009-03-14 Thread pmf

On Mar 14, 1:08 pm, Meikel Brandmeyer  wrote:
> I remember some presentation of someone doing this for,
> I think, Python. There you hint things, where the type is
> known and the compiler inferred the rest as far as possible.
> What cannot be inferred was cast to a special type called
> "dynamic". So this roughly worked like type hints in Clojure.
> Just with a bit more inference and "dynamic" meaning
> "reflection".

Something like that would probably play nice with the JVM's future
invokedynamic-instruction (or the .NET CLI's forthcoming dynamic vars).
--~--~-~--~~~---~--~~
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: Dynamic loading of code (a la Python)?

2009-03-14 Thread James Reeves

On Mar 14, 11:44 am, Rock  wrote:
> Now, I would love to recode this stuff in Lisp, especially Clojure.
> But is it possible to pull this off? From what I've been reading, it
> actually doesn't seem like it.

It's certainly possible to load in resource at runtime. Indeed, that's
how Clojure's use, require and load functions work.

However, I don't believe it's possible to apply a namespace only to a
specific lexical scope.

- James
--~--~-~--~~~---~--~~
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: filter1 interesting?

2009-03-14 Thread Stuart Sierra

I've added a "seek" function to clojure.contrib.seq-utils:

(defn seek
  "Returns the first item of coll for which (pred item) returns
logical true.
  Consumes sequences up to the first match, will consume the entire
sequence
  and return nil if no match is found."
  [pred coll]
  (first (filter pred coll)))


-Stuart Sierra
--~--~-~--~~~---~--~~
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: Dynamic loading of code (a la Python)?

2009-03-14 Thread pmf

On Mar 14, 12:44 pm, Rock  wrote:
> Hi all. I've been working on a piece of code (an xml-rpc server) in
> Python (actually Jython), and one of its features is the capability of
> loading modules (connectors in Java) during runtime. Not only are
> these modules dynamically loaded on request (their names passed as
> arguments in a string), but they are only visible in the lexical scope
> of the specific method/function, the resources being released as soon
> as that same scope is left.
>
> Now, I would love to recode this stuff in Lisp, especially Clojure.
> But is it possible to pull this off? From what I've been reading, it
> actually doesn't seem like it.

Loading namespaces and classes can be done fully dynamic at runtime
(and this is actually the default behavior when you're not using the
AOT-compilation capabilities of Clojure; regular late binding).

To release the resources (classes loaded on demand), you'd have to use
a dedicated classloader, since the JVM only unloads loaded classes
when their classloader is GCd.

As for lexically scoping loaded classes, is this a security issue or
do you just want to avoid polluting the global namespace?
--~--~-~--~~~---~--~~
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: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 16:16 schrieb stephaner:


de/kotka/vimclojure/backend.clj
de/kotka/vimclojure/nails.clj
de/kotka/vimclojure/repl.clj


These don't get compiled. There is definitively
an error in the ant build. How do you invoce
ant? Did you create the local.properties file
as the README states?

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread stephaner

Hi again,

There are some errors in the build process. First here is my
local.properties

clojure.jar=/home/stephane/src/clojure/clojure.jar
clojure-contrib.jar=/home/stephane/src/clojure-contrib/clojure-
contrib.jar
nailgun-client=ng

I did built it with either a single : ant

and a build script:

CLOJURE=/home/stephane/src/clojure/clojure.jar
CLOJURECONTRIB=/home/stephane/src/clojure-contrib/clojure-contrib.jar
NAILGUNCLIENT=ng
VIMCLOJUREHOME=/home/stephane/opt/vimclojure-2.0.0

cp -r {autoload,doc,ftdetect,ftplugin,indent,syntax} /home/
stephane/.vim
ant -Dnailgun-client=${NAILGUNCLIENT} -Dclojure.jar=${CLOJURE} -
Dclojure-contrib.jar=${CLOJURECONTRIB}

Building I get the following error:
nailgun-server:
[javac] Compiling 1 source file to /home/stephane/src/
vimclojure-2.0.0/classes
[javac] Compiling 21 source files to /home/stephane/src/
vimclojure-2.0.0/classes
[javac] Note: /home/stephane/src/vimclojure-2.0.0/src/com/
martiansoftware/nailgun/builtins/NGClasspath.java uses or overrides a
deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
 [copy] Copying 2 files to /home/stephane/src/vimclojure-2.0.0/
classes

aot:
 [java] Compiling de.kotka.vimclojure.gencompletions to /home/
stephane/src/vimclojure-2.0.0/classes
 [java] Compiling de.kotka.vimclojure.util to /home/stephane/src/
vimclojure-2.0.0/classes
 [java] java.lang.Exception: Unable to resolve symbol: type in
this context (util.clj:285)
 [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute
(ExecuteJava.java:194)
 [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
 [java] at org.apache.tools.ant.taskdefs.Java.executeJava
(Java.java:218)
 [java] at org.apache.tools.ant.taskdefs.Java.executeJava
(Java.java:132)
 [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:
105)
 [java] at org.apache.tools.ant.UnknownElement.execute
(UnknownElement.java:288)
 [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
 [java] at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
 [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
 [java] at java.lang.reflect.Method.invoke(Method.java:597)
 [java] at org.apache.tools.ant.dispatch.DispatchUtils.execute
(DispatchUtils.java:106)
 [java] at org.apache.tools.ant.Task.perform(Task.java:348)
 [java] at org.apache.tools.ant.Target.execute(Target.java:357)
 [java] at org.apache.tools.ant.Target.performTasks(Target.java:
385)
 [java] at org.apache.tools.ant.Project.executeSortedTargets
(Project.java:1337)
 [java] at org.apache.tools.ant.Project.executeTarget
(Project.java:1306)
 [java] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets
(DefaultExecutor.java:41)
 [java] at org.apache.tools.ant.Project.executeTargets
(Project.java:1189)
 [java] at org.apache.tools.ant.Main.runBuild(Main.java:758)
 [java] at org.apache.tools.ant.Main.startAnt(Main.java:217)
 [java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:
257)
 [java] at org.apache.tools.ant.launch.Launcher.main
(Launcher.java:104)
 [java] Caused by: java.lang.Exception: Unable to resolve symbol:
type in this context (util.clj:285)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:4032)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:3978)
 [java] at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:
2756)
 [java] at clojure.lang.Compiler.analyzeSeq(Compiler.java:4190)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:4017)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:3978)
 [java] at clojure.lang.Compiler$BodyExpr$Parser.parse
(Compiler.java:3678)
 [java] at clojure.lang.Compiler$TryExpr$Parser.parse
(Compiler.java:1867)
 [java] at clojure.lang.Compiler.analyzeSeq(Compiler.java:4188)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:4017)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:3978)
 [java] at clojure.lang.Compiler$BodyExpr$Parser.parse
(Compiler.java:3678)
 [java] at clojure.lang.Compiler$FnMethod.parse(Compiler.java:
3513)
 [java] at clojure.lang.Compiler$FnMethod.access$1100
(Compiler.java:3390)
 [java] at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2952)
 [java] at clojure.lang.Compiler.analyzeSeq(Compiler.java:4186)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:4017)
 [java] at clojure.lang.Compiler.analyze(Compiler.java:3978)
 [java] at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:
2756)
 [java] at clojure.lang.Compiler.analyzeSeq

Re: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread stephaner

Hi I did get it working,

I had to pull out of svn and rebuild clojure and clojure-contrib.

Thank you everyone for your help,

Stéphane

On Mar 14, 11:53 am, stephaner  wrote:
> Hi again,
>
> There are some errors in the build process. First here is my
> local.properties
>
> clojure.jar=/home/stephane/src/clojure/clojure.jar
> clojure-contrib.jar=/home/stephane/src/clojure-contrib/clojure-
> contrib.jar
> nailgun-client=ng
>
> I did built it with either a single : ant
>
> and a build script:
>
> CLOJURE=/home/stephane/src/clojure/clojure.jar
> CLOJURECONTRIB=/home/stephane/src/clojure-contrib/clojure-contrib.jar
> NAILGUNCLIENT=ng
> VIMCLOJUREHOME=/home/stephane/opt/vimclojure-2.0.0
>
> cp -r {autoload,doc,ftdetect,ftplugin,indent,syntax} /home/
> stephane/.vim
> ant -Dnailgun-client=${NAILGUNCLIENT} -Dclojure.jar=${CLOJURE} -
> Dclojure-contrib.jar=${CLOJURECONTRIB}
>
> Building I get the following error:
> nailgun-server:
>     [javac] Compiling 1 source file to /home/stephane/src/
> vimclojure-2.0.0/classes
>     [javac] Compiling 21 source files to /home/stephane/src/
> vimclojure-2.0.0/classes
>     [javac] Note: /home/stephane/src/vimclojure-2.0.0/src/com/
> martiansoftware/nailgun/builtins/NGClasspath.java uses or overrides a
> deprecated API.
>     [javac] Note: Recompile with -Xlint:deprecation for details.
>     [javac] Note: Some input files use unchecked or unsafe operations.
>     [javac] Note: Recompile with -Xlint:unchecked for details.
>      [copy] Copying 2 files to /home/stephane/src/vimclojure-2.0.0/
> classes
>
> aot:
>      [java] Compiling de.kotka.vimclojure.gencompletions to /home/
> stephane/src/vimclojure-2.0.0/classes
>      [java] Compiling de.kotka.vimclojure.util to /home/stephane/src/
> vimclojure-2.0.0/classes
>      [java] java.lang.Exception: Unable to resolve symbol: type in
> this context (util.clj:285)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute
> (ExecuteJava.java:194)
>      [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
>      [java]     at org.apache.tools.ant.taskdefs.Java.executeJava
> (Java.java:218)
>      [java]     at org.apache.tools.ant.taskdefs.Java.executeJava
> (Java.java:132)
>      [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:
> 105)
>      [java]     at org.apache.tools.ant.UnknownElement.execute
> (UnknownElement.java:288)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:597)
>      [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute
> (DispatchUtils.java:106)
>      [java]     at org.apache.tools.ant.Task.perform(Task.java:348)
>      [java]     at org.apache.tools.ant.Target.execute(Target.java:357)
>      [java]     at org.apache.tools.ant.Target.performTasks(Target.java:
> 385)
>      [java]     at org.apache.tools.ant.Project.executeSortedTargets
> (Project.java:1337)
>      [java]     at org.apache.tools.ant.Project.executeTarget
> (Project.java:1306)
>      [java]     at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets
> (DefaultExecutor.java:41)
>      [java]     at org.apache.tools.ant.Project.executeTargets
> (Project.java:1189)
>      [java]     at org.apache.tools.ant.Main.runBuild(Main.java:758)
>      [java]     at org.apache.tools.ant.Main.startAnt(Main.java:217)
>      [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:
> 257)
>      [java]     at org.apache.tools.ant.launch.Launcher.main
> (Launcher.java:104)
>      [java] Caused by: java.lang.Exception: Unable to resolve symbol:
> type in this context (util.clj:285)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:4032)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:3978)
>      [java]     at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:
> 2756)
>      [java]     at clojure.lang.Compiler.analyzeSeq(Compiler.java:4190)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:4017)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:3978)
>      [java]     at clojure.lang.Compiler$BodyExpr$Parser.parse
> (Compiler.java:3678)
>      [java]     at clojure.lang.Compiler$TryExpr$Parser.parse
> (Compiler.java:1867)
>      [java]     at clojure.lang.Compiler.analyzeSeq(Compiler.java:4188)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:4017)
>      [java]     at clojure.lang.Compiler.analyze(Compiler.java:3978)
>      [java]     at clojure.lang.Compiler$BodyExpr$Parser.parse
> (Compiler.java:3678)
>      [java]     at clojure.lang.Compiler$FnMethod.parse(Compiler.java:
> 3513)
>      [java]     at clojure.lang.Compiler$FnMethod.access$1100
> (Compiler.java:3390)
>      [java]     at clojure.la

Re: VimClojure 2.0.0 Exception while reading a .clj

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 16:53 schrieb stephaner:


[java] java.lang.Exception: Unable to resolve symbol: type in
this context (util.clj:285)


You are missing the type function, which was added in a recent
SVN version (rev 1307). At the moment VimClojure relies on a
more recent SVN revision. Please update at least to 1307 and
try again. As soon as the magic 1.0 is released I will synchronise
VimClojure with the Clojure releases.

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: Dynamic loading of code (a la Python)?

2009-03-14 Thread Rock



On Mar 14, 4:27 pm, pmf  wrote:
> On Mar 14, 12:44 pm, Rock  wrote:
>
> > Hi all. I've been working on a piece of code (an xml-rpc server) in
> > Python (actually Jython), and one of its features is the capability of
> > loading modules (connectors in Java) during runtime. Not only are
> > these modules dynamically loaded on request (their names passed as
> > arguments in a string), but they are only visible in the lexical scope
> > of the specific method/function, the resources being released as soon
> > as that same scope is left.
>
> > Now, I would love to recode this stuff in Lisp, especially Clojure.
> > But is it possible to pull this off? From what I've been reading, it
> > actually doesn't seem like it.
>
> Loading namespaces and classes can be done fully dynamic at runtime
> (and this is actually the default behavior when you're not using the
> AOT-compilation capabilities of Clojure; regular late binding).
>
> To release the resources (classes loaded on demand), you'd have to use
> a dedicated classloader, since the JVM only unloads loaded classes
> when their classloader is GCd.
>
> As for lexically scoping loaded classes, is this a security issue or
> do you just want to avoid polluting the global namespace?

Well, basically the way things are now, my jython xml-rpc server
recieves a request to do a certain operation remotely (say on target
"foo") and consequently loads the specific connector (where I work, we
call it an agent) to perform the operation, for instance a SOAP
request for identity management and provisioning on a remote target.
The module gets loaded in Python (Jython) something like this:

proxy = __import__(name) # where name is a string
proxy.doOperation(*args)

After leaving the method where the above two lines of code are
located, the module stored in proxy is no longer accessible, and the
resources are released. That's cool because, even better than the
namespace, you don't clutter your memory with unused modules. We've
got around 50 agents at the moment, but we don't need to have them
loaded in memory at the same time, but only on demand obviously.


Rock
--~--~-~--~~~---~--~~
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: A pretty printer for Clojure

2009-03-14 Thread budu

I just tried it, this is fantastic! We'll finally be able to debug
macros while keeping our sanity. Many thanks for this and I hope it
will be added directly into Clojure.

On Mar 12, 3:05 am, Tom Faulhaber  wrote:
> I have now "released" the first version of my pretty printer as part
> of my cl-format library. It is released under the EPL.
>
> The pretty printer has two functions that you probably care about:
>
> (pprint obj) will pretty print the given object, and
> (pp) at the REPL will pretty print the last result output, i.e. the
> value in *1.
>
> The pretty printer currently supports two modes: simple and code.
> Simple mode prints structure in a standard way that's good for data.
> Code mode understands lots of Clojure forms (defn, binding vectors,
> condp, etc.) and attempts to print them in an idiomatic way.
>
> Cl-format is on github athttp://github.com/tomfaulhaber/cl-format.
> There is a Readme there with instructions, examples, limitations and
> futures. I won't even try to put examples here, because google groups
> wreaks havoc on formatting.
>
> The simplest way to get some pretty printing happiness:
> 1) Download the 
> jar:http://github.com/tomfaulhaber/cl-format/raw/master/release/cl-format...
> 2) Put it in your classpath.
> 3) Fire up your REPL
> 4) (use 'com.infolace.format)
> 5) Use pprint and pp as described above.
>
> This is definitely a first release and there are sure to be bugs. And
> I know there are things missing. So let me know if you're having
> problems and I'll try to get things fixed up ASAP.
>
> Enjoy!
>
> Tom
--~--~-~--~~~---~--~~
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: filter1 interesting?

2009-03-14 Thread e
>
>
>
> (first even? (iterate inc 1)) => 2


to me that sounds like something with real staying power ... like it should
have always worked that way ... but I don't have much experience with lisp

--~--~-~--~~~---~--~~
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: Dynamic loading of code (a la Python)?

2009-03-14 Thread pmf

On Mar 14, 5:06 pm, Rock  wrote:
> proxy = __import__(name) # where name is a string
> proxy.doOperation(*args)
>
> After leaving the method where the above two lines of code are
> located, the module stored in proxy is no longer accessible, and the
> resources are released. That's cool because, even better than the
> namespace, you don't clutter your memory with unused modules. We've
> got around 50 agents at the moment, but we don't need to have them
> loaded in memory at the same time, but only on demand obviously.

The following might point into the direction you need.

;; simple function to get a fresh classloader
(defn make-fresh-classloader [] (proxy [java.lang.ClassLoader] []))

;; Global var, since we want something bindable
(def *my-classloader*)

;; Use a fresh classloader in a binding-form
(binding [*my-classloader* (make-fresh-classloader)]
  (comment Your code, in which the classes you want to be
  disposed later should be loaded via the fresh
classloader,
  not via the system classloader))

Assuming you leak neither newly allocated Class-objects nor instances
thereof outside the binding-block, the created classloader will be GCd
(along with classes loaded by it) sometime after the binding-block has
been executed (allocated Classe-objects retain a reference to their
classloader, so leaking them would prevent the classloader from being
GCd).

--~--~-~--~~~---~--~~
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: errors?

2009-03-14 Thread Jeffrey Straszheim
Try frequently doing:
(use :reload 'fully.qualified.name.of.my.file)

When you are interactively adding code to the REPL (by typing or through
Slime or whatever) it doesn't know the line number.  If you reload the file
containing the offending code, it will.

I usually have a comment block like this on the bottom of modules I'm
working on:

(comment
  (use :reload 'this.current.file)
  (use 'clojure.contrib.stacktrace) (e)
  (use 'clojure.contrib.trace)
)

That way I can pop down there, reload the file, ensure that stacktrace is
loaded, and run the (e) command (to show the exception) without any effort.

On Sat, Mar 14, 2009 at 2:42 AM, Mark Engelberg wrote:

>
> But how do you get rid of the (NO_SOURCE_FILE:0) messages for every
> single error?  I'd really like to know the line number of the function
> that threw the error.
>
> >
>

--~--~-~--~~~---~--~~
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: design patterns for event driven applications

2009-03-14 Thread Jeffrey Straszheim
Hasn't someone been working on a Clojure vesion of Parsec?

On Sat, Mar 14, 2009 at 4:31 AM, Christophe Grand wrote:

>
> Anatoly Yakovenko a écrit :
> > basically i am dealing with a 3rd party library, (interactive brokers
> > tws api), that takes an interface with lots of different methods that
> > it calls when an event occurs.  like received market data, received
> > order, etc...  It provides another interface that basically generates
> > these events.
> >
> > Some of the events are statefull, like i canceled an order, i get a
> > response that the order cancel was received, and then i get a
> > confirmation that the order was canceled.
> >
> > If i was implementing this in haskell, (i am at the moment, but
> > writing the bindings is a pain in the arse), i would pump all the
> > events into a Chan, essentially a lazy evaluated sequence used to get
> > stuff from IO, and write a parser on top of that.
>
> This first part is rather easy to port to Clojure, use a BlockingQueue
> to buffer events received by the callback interface:
>  (def #^java.util.concurrent.BlockingQueue q
> (java.util.concurrent.LinkedBlockingQueue.))
> and in your consumer thread, turn it into a sequence:
>  (def s (repeatedly #(.take q))) ; (EOS handling is left as an exercise)
>
> For the parser part, I'm afraid there's no such thing right now. Maybe
> can you build upon Konrad's monads library?
>
> HTH Christophe
>
>
> --
> Professional: http://cgrand.net/ (fr)
> On Clojure: http://clj-me.blogspot.com/ (en)
>
>
>
> >
>

--~--~-~--~~~---~--~~
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: design patterns for event driven applications

2009-03-14 Thread Meikel Brandmeyer

Hi,

Am 14.03.2009 um 18:42 schrieb Jeffrey Straszheim:


Hasn't someone been working on a Clojure vesion of Parsec?


I started a port of Parsec, but it is not in a usable state.
But there are alternatives like, eg. http://github.com/joshua-choi/fnparse

Sincerely
Meikel



smime.p7s
Description: S/MIME cryptographic signature


Re: Clojure, swank-clojure, and Debian

2009-03-14 Thread Allen Rohner

On Mar 14, 5:42 am, Javier  wrote:
> Ok, I can answer myself, thanks to maacl in the IRC:
>
> Download clojure-mode:
>
> git clone git://github.com/jochu/clojure-mode.git
>
> And put this:
>
> (add-to-list 'load-path "/path/to/clojure-mode")
> (require 'clojure-mode)
>
> in .emacs, restart, and M-x clojure-install.
>
> Really fantastic.
>
> The guide I tried to follow is just broken.
>
> Thank you.
>
> On 14 mar, 10:22, Javier  wrote:
>
> > Hello, I'm trying to start learning Clojure, but I fail miserably at
> > some point trying to get a decent IDE to work.
>
> > - First, Enclojure for Netbeans has lot of bugs, it is inusable for me
> > at this stage.
> > - I'm not used to Eclipse nor Intellijea, so I discard both.
> > - I'm used to Emacs, and have used Slime and SBCL with success before,
> > but I must admit that it was too easy: all I had to do is apt-get
> > install sbcl slime.
>
> > So I found this guide:
>
> >http://riddell.us/clojure/
>
> > It is for Ubuntu, but I do not see that the process could not be the
> > same for Debian.
>
> > I followed the entire guide, checked and rechecked everything. But
> > when I want to start slime, I get:
>
> > (add-classpath "file:home/javi/program/clojure/swank-clojure/")
>
> > (require 'swank.swank)
>
> > (swank.swank/ignore-protocol-version "2009-03-09")
>
> > (swank.swank/start-server "/tmp/slime.20900" :encoding "iso-latin-1-
> > unix")
>
> > Clojure
> > user=> nil
> > user=> java.lang.Exception: Unable to resolve symbol: lazy-seq in this
> > context (core.clj:70)
> > user=> java.lang.Exception: No such var: swank.swank/ignore-protocol-
> > version (NO_SOURCE_FILE:5)
> > user=> java.lang.Exception: No such var: swank.swank/start-server
> > (NO_SOURCE_FILE:7)
> > user=>
>
> > And Slime refuses to full start.
>
> > I am just in the point of giving up and forget Clojure, so please help
> > me.
> > What I missed?
>
> > Thank you.

Yeah, sorry about that. Clojure continues to have breaking changes
because it's still young, and SLIME refuses to have a stable release,
so it's sometimes hard to coordinate the two. Welcome to the bleeding
edge!

Allen

--~--~-~--~~~---~--~~
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: Question about IntelliJ Plugin

2009-03-14 Thread CuppoJava

Hi Mark,
The classpaths for the IntelliJ plugin are not quite setup properly.
This is how I'm working around this.

Clojure requires the folder that contains the clojure source code to
be in the classpath.
I did this in IntelliJ, by attaching a new library to the current
project which points to the src folder of the project.

Hope this helps
-Patrick
--~--~-~--~~~---~--~~
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: Bytecode optimization

2009-03-14 Thread Stu Hood
Rich has done a lot of work to make sure that when you are working with
primitives, the JVM bytecode ends up being very similar to what Java would
generate. See http://clojure.org/java_interop#toc36

Thanks,
Stu

On Thu, Mar 12, 2009 at 6:20 PM, Howard Lewis Ship  wrote:

>
> Well, at some point I'll open up the code and check.  Though I'll be
> overly tempted to write some comments, fix the indentation and write
> some tests if I do!
>
> On Thu, Mar 12, 2009 at 2:36 PM, Jarkko Oranen  wrote:
> >
> >
> > On Mar 12, 11:15 pm, Howard Lewis Ship  wrote:
> >> I have to wonder a bit about the ability to optimize.  Everything
> >> boils down to one of the seven or so basic forms.  That's a lot of
> >> function calls to do even small things, like adding numbers. You might
> >> think that simple math would be optimized and inlined, but it isn't:
> >>
> >> Clojure
> >> user=> (doc +)
> >> -
> >> clojure.core/+
> >> ([] [x] [x y] [x y & more])
> >>   Returns the sum of nums. (+) returns 0.
> >> nil
> >> user=> (ns clojure.core)
> >> #
> >> clojure.core=> (defn + [x y] (* x y))
> >> #'clojure.core/+
> >> clojure.core=> (+ 3 5)
> >> 15
> >> clojure.core=>
> >>
> >> This implies, to me, that Clojure is doing a full functional call,
> >> with dynamic lookup via the namespace, even for +.
> >
> > I think this is mistaken. Sure, for (+ foo bar) calls in the repl
> > Clojure will do a full lookup,  but if you have  addition in a tight
> > loop, the JVM should notice this and optimise it further. (I think
> > Clojure also does some kind of caching.) You can also use type casts
> > to make clojure use primitive instead of boxed math, bringing
> > performance very close to Java.
> >
> > Now, it's probably true that the most straightforward Clojure
> > implementation of an algorithm is likely not quite as fast as the Java
> > equivalent, with a few tricks, you can often get pretty close.
> >
> > I don't have very in-depth knowledge of how Clojure handles these
> > performance issues, but I believe your assumption is overly
> > pessimistic. :)
> >
> > --
> > Jarkko
> > >
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator Apache Tapestry and Apache HiveMind
>
> >
>

--~--~-~--~~~---~--~~
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: Performance tips for Clojure

2009-03-14 Thread Stu Hood
There is a interface 'Counted' that a lot of Clojure data structures
implement to indicate that they provide O(1) for (count).

Thanks,
Stu

On Fri, Mar 13, 2009 at 4:59 AM, Christophe Grand wrote:

>
> Christian Vest Hansen a écrit :
> > I think that count is O(n) for lists, no?
> >
>
> Count is O(1) for lists but O(n) for a chain of conses.
>
> Clojure
> user=> (let [l (apply list (range 10))] (time (dotimes [_ 100]
> (count l
> "Elapsed time: 169.710116 msecs"
> nil
> user=> (let [l (apply list (range 40))] (time (dotimes [_ 100]
> (count l
> "Elapsed time: 167.664046 msecs"
> nil
> user=> (let [l (reduce #(cons %2 %1) nil (range 10))] (time (dotimes
> [_ 100] (count l
> "Elapsed time: 662.121862 msecs"
> nil
> user=> (let [l (reduce #(cons %2 %1) nil (range 100))] (time
> (dotimes [_ 100] (count l
> "Elapsed time: 5316.110567 msecs"
> nil
>
>
> --
> Professional: http://cgrand.net/ (fr)
> On Clojure: http://clj-me.blogspot.com/ (en)
>
>
>
> >
>

--~--~-~--~~~---~--~~
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: errors?

2009-03-14 Thread Raoul Duke

> Try frequently doing:

all of this sounds like it would be great if i understood enough of it
all to make some patches to the source code -- it strikes me as rather
newbie-unfriendly the way it currently all works. $0.02.

sincerely.

--~--~-~--~~~---~--~~
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: Question about IntelliJ Plugin

2009-03-14 Thread Ilya Sergey
Oops, my bad.
Could you create appropriate ticket for us to fix it?

With best regards,
Ilya

2009/3/14 CuppoJava 

>
> Hi Mark,
> The classpaths for the IntelliJ plugin are not quite setup properly.
> This is how I'm working around this.
>
> Clojure requires the folder that contains the clojure source code to
> be in the classpath.
> I did this in IntelliJ, by attaching a new library to the current
> project which points to the src folder of the project.
>
> Hope this helps
> -Patrick
> >
>

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



Main Function for Program Entry Point

2009-03-14 Thread Keith Bennett

Is it a good idea or a bad idea to provide a main() function as the
program's entry point?

As an example, I have a program at http://is.gd/ndTV.  If you look at
the bottom you'll see (unless and until I change it) the specification
of a main function, and then a call to it.  I'm aware that I could
just list the contents of main() outside any function, and it would
work the same way.

So which approach is better, and why?

Thanks,
Keith


--~--~-~--~~~---~--~~
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: What is Clojure NOT good for?

2009-03-14 Thread knubee

i really am curious about how good clojure can be as a language for
prototyping new *languages* (and new paradigms). this has always been
a strength of lisp and scheme, but they both support imperative as
well as functional programming. as an example: how easy would it be to
implement a language like Processing in clojure?

i am not saying it is impossible (or even hard). i just honestly do
not know. and would be very helpful to hear what others think.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---