Re: Function called from macro loses record structure

2010-07-16 Thread Quzanti
Kyle

I think I understand what you are saying.

So in practice you should prevent functions called from a macro from
evaluating the records (using quoting), so that the output is in a
form that looks like source code should?

So think it probably is my lack of intuition about macros that is the
problem here?

 What I don't know is, is it meaningful for a macro to expand to
 something that contains stuff that couldn't ever appear in the output
 of the reader, like instances of user-defined types, or even Java
 objects for that matter? What is the expected behavior here?


-- 
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: Function called from macro loses record structure

2010-07-16 Thread Kyle Schaffrick
On Thu, 15 Jul 2010 23:08:27 -0700 (PDT)
Quzanti quza...@googlemail.com wrote:

 Kyle
 
 I think I understand what you are saying.
 
 So in practice you should prevent functions called from a macro from
 evaluating the records (using quoting), so that the output is in a
 form that looks like source code should?
 

Precisely; I think my first instinct would be that macros should
probably only expand to forms that look like regular Clojure source.

However there are situations where it is appropriate and indeed very
useful to unquote function calls in a macro. For example you may wish to
call some regular function that returns a data structure which you then
insert into the macro expansion. Personally I find this is actually
a very useful technique for writing macros: write a regular, private
function that does the hard work of transforming the source code data
structures without having to worry about macros' abnormal evaluation
rules, and then call that function from a much simpler macro, inserting
the result in the macro expansion using unquote.

However, I would think any data structure returned from a function used
in this way would still need to be something that can be interpreted as
Clojure source code: lists, vectors, maps, and sets containing symbols,
keywords, and so on. Any sort of user defined objects or Java objects,
*as far as I can tell*, don't make any sense in the result of a macro
expansion, but that is why I wrote this part:

  What I don't know is, is it meaningful for a macro to expand to
  something that contains stuff that couldn't ever appear in the
  output of the reader, like instances of user-defined types, or even
  Java objects for that matter? What is the expected behavior here?
 

This was actually sort of an open question to the Clojure experts on the
mailing list, since I'm not actually sure about the answer. Should
this be done at all? Is it always an error (or at least bad style), or
should/could it be a meaningful operation in some cases? As I said, I
don't see any useful reason to do this, but maybe I just can't think of
one. I'd be interested to know what others think.

-Kyle

-- 
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 lein-daemon, lein-test-out

2010-07-16 Thread Alex Ott
Re

Just fyi - when running clojure program under daemon on windows, you can
get NPE, if you'll try to load file or resources.  See
http://www.assembla.com/spaces/clojure/tickets/379 for details

Allen Rohner  at Thu, 15 Jul 2010 15:00:03 -0700 (PDT) wrote:
 AR I'd like to announce two new lein plugins, lein daemon and lein test-
 AR out.

 AR Lein-daemon is a wrapper around the Apache Commons Daemon, for
 AR starting a clojure process as a daemon.

 AR Lein test-out is a plugin for running your tests and outputting the
 AR results to junit or TAP (using clojure.test.junit and
 AR clojure.test.tap).

 AR You can find them at http://github.com/arohner/lein-daemon , and
 AR http://github.com/arohner/lein-test-out , and clojars.

 AR Allen



-- 
With best wishes, Alex Ott, MBA
http://alexott.blogspot.com/   http://alexott.net
http://alexott-ru.blogspot.com/

-- 
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: terracotta?

2010-07-16 Thread peter veentjer
To repeat myself again:

The big problem with a MVCC based STM, is that there is a central
clock
that needs to be touched by independent transactions. That was one of
the
reasons for me to get not started on a distributed STM.

So you will get something up and running on your laptop, but it will
not be
of great value in a scalable system (since it limits scalability).

The best way forward imho is to remove the central clock either by:
- a vector clock (most expensive read validations instead of a simple
long comparison, more complex infrastructure since you don't want to
have ever growing timestamps in your system).
- use a different (d)stm mechanism. The cool thing about mvcc/tl2 is
that you
can go back to previous history.. with other stm mechanisms this might
be
more tricky.

Or you could try to enter the nosql domain, so dealing with various
levels
of consistency and perhaps broken failure atomicity (since some of
them only
guarantee atomicity over a single 'record' and not over records
spanning
multiple machines that are modified in a single transaction.


On Jul 16, 4:51 am, Alex Miller alexdmil...@yahoo.com wrote:
 Hi,

 I used to be a tech lead at Terracotta but I am now a full-time
 Clojure dev.  I think it would be very interesting to explore the new
 Terracotta Toolkit product to provide a distributed store for Clojure
 data structures.  I think it actually comes out in GA next week
 although it's been available to try for a while.  If only I had 47
 hours per day I would be all over giving it a try.  If someone is
 banging on it and needs help, I'm happy to connect you to the right
 people or give you some pointers.

 Also, Sergio is doing some awesome work with Terrastore and I'd highly
 recommend giving it a shot if it fits your needs!

 I'd really like to hear some detailed use cases for what you want out
 of Clojure/Terracotta integration. Is it shared Clojure data? Locking?
 Coordination? Caching? Remote code execution?

 Alex

 On Jul 15, 7:51 pm, Paul Stadig p...@stadig.name wrote:

  If anyone is interested, the latest version of my terracotta TIM is 
  athttp://github.com/pjstadig/tim-clojure-1.0.0andit tries to be a Clojure
  1.0.0 compatible TIM, which shows how its a bit out-of-date.

  I am very open to collaboration, and I would love pull requests, or any
  patches that anyone sends.

  Paul
  http://paul.stadig.name/(blog)
  703-634-9339 (mobile)
  pjstadig (twitter)
  p...@stadig.name (jabber)

  On Thu, Jul 15, 2010 at 12:35 PM, scx mark_addle...@bigfoot.com wrote:
   Hi --

   I'm noob to both Clojure and Terracotta but if you're willing to
   tolerate basic questions from me, I'd be very interested in helping
   out.

   On Jul 12, 3:36 am, peter veentjer alarmnum...@gmail.com wrote:
I don't think it every is going to scale.

MVCC/TL2 based STM designs rely on a central clock, so if you can
update the clock in 0.1 ms on all machines, the maximum throughput is
1/0.0001 = 10.000 transactions/second... no matter how many machines
you throw at it. Even on a single machine the central clock can cause
scalability problems (10/20M transactions/second and this will degrade
when you throw more cores at it).

This is one of the reasons I dropped the TL2 approach for Multiverse
and switched over to the SkySTM model (with some magic of my own) that
doesn't relied as much on a central mechanism.

On Jul 11, 6:50 pm, scx mark_addle...@bigfoot.com wrote:

 hi --

 i've seen paul standig's work with clojure +terracotta.  wondering if
 anyone has continued his work?

   --
   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.comclojure%2bunsubscr...@googlegroups.com

   For more options, visit this group at
  http://groups.google.com/group/clojure?hl=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
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


Cljr and user.clj

2010-07-16 Thread Rick Moynihan
I've just installed Cljr and am really impressed with it...  However I
have run into a small problem.

I'd like to have my cljr execute my user.clj at startup, however it
seems that cljr is ignoring classpaths added with the command

cljr add-classpath ~/.clojure/

looking in ~/.cljr/project.clj I see that this has been added
correctly, and that if I execute lein swank in the .cljr directory,
lein correctly picks up the user.clj file on my classpath...
indicating that there is a problem with cljr.

Otherwise cljr is great...  Any help appreciated.

R.

-- 
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: Building mixed clojure and java code

2010-07-16 Thread Martin DeMello
Thanks, that got me up and running! I had to upgrade to head lein and
wipe my maven repository first (as per
http://groups.google.com/group/leiningen/browse_thread/thread/8f2ef7edb9fda3be?pli=1)
and then pull the latest lein-javac, and after that it all worked
smoothly.

martin

On Thu, Jul 15, 2010 at 12:41 AM, Mark McGranaghan mmcgr...@gmail.com wrote:
 Hi Martin,

 http://github.com/mmcgrana/clj-json is a simple example of a Clojure
 +Java library that you could use as a working example. See in
 particular project.clj the Development section of README.md.

 Hope this helps,
 - Mark

 On Jul 14, 6:16 am, Martin DeMello martindeme...@gmail.com wrote:
 On Wed, Jul 14, 2010 at 6:45 PM, Martin DeMello martindeme...@gmail.com 
 wrote:
  What are people using to build mixed clojure/java code? Currently just
  using lein {uber,}jar to build and distribute.

 Hit send too soon - I meant to say, currently my project is just
 clojure, and lein works very nicely to package it. If I wanted to
 include some java sources, what would the easiest way to build the
 combined project be?

 martin

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

-- 
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: defmulti - defonce semantics?

2010-07-16 Thread Pedro Teixeira
On Jul 14, 4:09 pm, Michał Marczyk michal.marc...@gmail.com wrote:
 If you're ok with discarding all your methods for the given multi, you can do

 (ns-unmap the-ns-of-defmultiname-of-the-multimethod)

 (I'm not sure if you should also unmap it in namespaces which refer to
 that Var just now...)

 Then the entire multifunction will be recreated when you recompile.

Hi, perhaps someone has already stumble upon this issue:

For some reason, when using immigrate, defmethod is not working. that
is, defmethod inside a namespace which 'use a namespace which
'immigrate a defmulti does not seem to a dispatch function to the
(methods 'multimethod).

Does it make sense?

regards,
Pedro


-- 
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 noob: refactoring factorial code

2010-07-16 Thread Brisance
Thanks for the response.

To get an idea of what I mean,  visit http://www.wolframalpha.com/''.
Then enter something ridiculous (to me, at least) like 10!

The answer is almost instantaneous.

The question is: how would someone write idiomatic Clojure in such a
way that it gives exact results for n, and reasonable approximations
(BigDecimal?) for large values of n, without having to write a
separate function?

In imperative/procedural languages, based available computing
resources one would arrive at some arbitrary value (say, 1000) and use
different algorithms based on the size of n. Is this also the case for
Clojure?

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Command line debugging

2010-07-16 Thread Steve Molitor
Sorry if this has already been answered, but what's the best recipe for
getting a command line debugger going with clojure 1.2 snapshots?  I've read
about debug-repl and other solutions but I'm not sure what works with 1.2.

Thanks,

Steve

-- 
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 noob: refactoring factorial code

2010-07-16 Thread Brisance
Hello Mike,

Thanks for taking time to respond. I replied to another post but
somehow it didn't show up. Perhaps it is awaiting moderation.

Anyway, perhaps I should explain the situation more clearly.

In conventional imperative/procedural languages, as you pointed out,
the algorithm used to calculate the factorial would be dependent on
available compute resources. In order to select the appropriate
algorithm one might select an arbitrary value (let's say 1000) and
decide to use one algorithm or another. Or we might use a totally
different function altogether.

Is this also the case with Clojure? Being a newbie I have not fully
understood how one would tackle such a problem.

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


Saving runtime clojure image

2010-07-16 Thread Jozef Wagner
Hi,

I've read in some old discussion (
http://groups.google.com/group/clojure/browse_thread/thread/5259280f2fd8c8a5/
) that
Clojure cannot save a runtime image the way SBCL and other Lisps
can.

Is this still true or is it possible to save-lisp-and-die? If not, are
there plans for such functionality or it is inherently impossible to
do such thing in clojure?

With such functionality, I could do some REPL hacking, save the
runtime state and later get back to it.

Best,
Jozef

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


extend-protocol bug?

2010-07-16 Thread [AvataR]
I have record J:Bot, protocol P:Bot
and two files, one extend-protocol statement by file.
After loading first file i get:
http://pastebin.com/Kq5GZ6RJ
After loading second file i get:
http://pastebin.com/Pu3kHZ1h

Looks like next extend-protocol rewrite :impls seg. How/where post the
bug?

Or myabe this is a feature? :]

-- 
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: Saving runtime clojure image

2010-07-16 Thread Laurent PETIT
Not provided by the underlying platform, the JVM.

But one could consider recording your interactions with the REPL, and having
an option to replay them at startup.
With time, your REPL will start slower and slower and slower  though.
And even with an history replay feature, there will be times when the
replay is not sufficient (since you cannot totally control the I/O
environment: date/time, file/network resources, etc.)


2010/7/16 Jozef Wagner jozef.wag...@gmail.com

 Hi,

 I've read in some old discussion (

 http://groups.google.com/group/clojure/browse_thread/thread/5259280f2fd8c8a5/
 ) that
 Clojure cannot save a runtime image the way SBCL and other Lisps
 can.

 Is this still true or is it possible to save-lisp-and-die? If not, are
 there plans for such functionality or it is inherently impossible to
 do such thing in clojure?

 With such functionality, I could do some REPL hacking, save the
 runtime state and later get back to it.

 Best,
 Jozef

 --
 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.comclojure%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=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
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 noob: refactoring factorial code

2010-07-16 Thread James Reeves
On 15 July 2010 16:24, Brisance cru...@gmail.com wrote:
 Thanks for the response.

 To get an idea of what I mean,  visit http://www.wolframalpha.com/''.
 Then enter something ridiculous (to me, at least) like 10!

 The answer is almost instantaneous.

Wolfram Alpha is merely approximating the result to a certain
precision. I highly doubt it's actually calculating the whole number
and then just stripping off the first N digits!

- 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
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 1.2 Beta 1

2010-07-16 Thread Stefan Kamphausen
Hi,

I think I found a minor problem.  It appears with the error handling
of agents and actually is just a minor glitch in the output.

Consider the following session, copied from a terminal:

shell java -cp clojure.jar clojure.main
Clojure 1.2.0-beta1
user= (def agt1 (agent One))
#'user/agt1
user= (defn upd-agt1 [current new-val]
(if (= new-val fail)
  (throw (Exception. Update failed.))
  (str Update:  new-val)))
#'user/upd-agt1
user= (error-mode agt1)
:fail
user= (send agt1 upd-agt1 fail)
#ag...@21ed5459 FAILED: One

It creates an agent and causes an error in the update function.  The
error mode of the agent is :fail and it silently fails when calling
the action.  The failed status is visible from the printed output of
the agent in the last line.  Further attempts to update the agent will
raise an exception.

Now for a second version see the following session, which started
fresh. It does the same thing as the first session, but it makes sure
that the thread-pool for the agents contains more threads, first.

shell java -cp clojure.jar clojure.main
Clojure 1.2.0-beta1
;; this just creates some threads in the pool
user= (def agt2 (agent {:count 0}))
#'user/agt2
user= (defn agt2-action [state]
(println In Thread (.getName (Thread/currentThread)))
(if ( (:count state) 5)
  (do (send agt2 agt2-action)
  (assoc state :count (inc (:count state
  state))
#'user/agt2-action
user= (send agt2 agt2-action)
In Thread pool-1-thread-1
#ag...@4c6504bc: In Thread pool-1-thread-2
In Thread pool-1-thread-3
{:countIn Thread  pool-1-thread-4
1}
In Thread pool-1-thread-4
user= In Thread pool-1-thread-4
;; now the same as before...
user= (def agt1 (agent One))
#'user/agt1
user= (defn upd-agt1 [current new-val]
(if (= new-val fail)
  (throw (Exception. Update failed.))
  (str Update:  new-val)))
#'user/upd-agt1
user= (error-mode agt1)
:fail
user= (send agt1 upd-agt1 fail)
#ag...@7f11bfbc: One


This time the output doesn't show the FAILED status of the agent.

I am by no means sure that this change in behavior is related to the
pool of threads.  I found it by accident and could reproduce it
several times.

Kind regards,
Stefan

-- 
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 noob: refactoring factorial code

2010-07-16 Thread Brendan Ribera

 In conventional imperative/procedural languages, as you pointed out,
 the algorithm used to calculate the factorial would be dependent on
 available compute resources. In order to select the appropriate
 algorithm one might select an arbitrary value (let's say 1000) and
 decide to use one algorithm or another. Or we might use a totally
 different function altogether.

 Is this also the case with Clojure? Being a newbie I have not fully
 understood how one would tackle such a problem.


You can use the traditional, precise algorithm when n is tractable, and use
Stirling's formula to approximate for large n:

n! ~ sqrt(2*pi*n)*(n/e)^n

This approach seems reasonable to me, assuming you really need to handle the
large values.

-Brendan

-- 
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: extend-protocol bug?

2010-07-16 Thread Alex Ott
It's better to illustrate this with simple example:

If I'll define following protocol:

(defprotocol test1
  (a1 [this] a1)
  (a2 [this] a2)
  (a3 [this] a3)
  )

and then I can extend it with following constuction:

(extend-protocol test1 String
 (a1 [this] (str Hello1  this !)))

then I get no warning, that protocol test1 has 3 methods, and if I'll try
to call corresponding, not defined methods, then I'll get

(a2 bbb) -- method not defined

and if I'll try to extend it further with following call

(extend-protocol test1 String
 (a2 [this] (str Hello1  this !)))

then a2 will defined, but a1 become undefined.

May be we'll need either have a warning, that extend-protocol doesn't
defines all necessary methods, or we'll need to allow to append methods,
not defined earlier


[AvataR]  at Fri, 16 Jul 2010 16:27:36 +0300 wrote:
 [ I have record J:Bot, protocol P:Bot
 [ and two files, one extend-protocol statement by file.
 [ After loading first file i get:
 [ http://pastebin.com/Kq5GZ6RJ
 [ After loading second file i get:
 [ http://pastebin.com/Pu3kHZ1h

 [ Looks like next extend-protocol rewrite :impls seg. How/where post the
 [ bug?

 [ Or myabe this is a feature? :]



-- 
With best wishes, Alex Ott, MBA
http://alexott.blogspot.com/http://alexott.net/
http://alexott-ru.blogspot.com/
Skype: alex.ott

-- 
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: ClojureDocs.org

2010-07-16 Thread Islon Scherer
Hi.

Does clojuredocs expose any external API (json, xml... rest,
webservices, etc) so I can access the docs from my code?

Islon

On Jul 13, 11:40 pm, j-g-faustus johannes.fries...@gmail.com wrote:
 On Jul 13, 8:37 pm, Paul Moore p.f.mo...@gmail.com wrote:

  Can I suggest omitting the Table of contents sidebar when printing?
  I've not tried printing the document to see how it looks, but removing
  the sidebar would be an essential starting point...

 Why would anyone want to print it?

 I occasionally print longer texts like specifications, but for
 reference material like Javadoc,ClojureDocs, the Ruby cheat sheet and
 this page, I think HTML is a far superior format due to links and
 browser search.
 And 40+ loose single sheets is a rather cumbersome package unless you
 have access to a book binder.

 But if at least two people feel that they would really like to print
 it out, I can skip the TOC on print.

 (Making it look _nice_ on paper is a whole different ballgame, then
 I'd have to look into pagination and page layouts, perhaps by
 converting to DocBook or LaTex. That's outside the scope of what I
 intended to do.)

 On Jul 13, 10:04 pm, Meikel Brandmeyer m...@kotka.de wrote:

  Some comments after quickly skimming through:
  ...
  PS: I'm apologise if some this seems to be nit-picking.

 Not at all, I'm still learning the language and happy to get the
 details clarified.

 The second form of condp and the #_ were omitted simply because I
 didn't know about them, thanks for the heads-up.

 For quoted lists, I take your point.
 For the sequence operations examples it was somewhat deliberate, in
 that a sequence is a very different datatype from a vector but pretty
 much the same as a list.
 I had a bug in some code that conj'ed elements onto a vector, but for
 some reason it would switch direction in the middle and start adding
 elements at the opposite end. It took me a while to figure out that it
 was because concat'ing two vectors doesn't return a vector.
 So I wanted to emphasize that using a sequence op on anything other
 than a list is also a conversion from one datatype to another.
 But I'll take another look, there may be better ways.

 Thanks for your comments, much appreciated. I'll include them with the
 next update.

 Sincerely,
 jf

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


Clojure Job Opening in Ghent Belgium

2010-07-16 Thread hochstenbach
Hi all,

I hope you don't mind me sharing Clojure job opportunity in Ghent
Belgium. Our university library is searching for a developer willing
to participate in an open source project to create an image database
to present high resolutions scans of old manuscripts on the Internet.

Here is the (Dutch) posting: 
http://www.ugent.be/nl/nieuwsagenda/vacatures/atp/contract-tijdelijk/ivh

Working on site in Ghent for 13 months.

Best,
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
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: ClojureDocs.org

2010-07-16 Thread Lee Hinman
Had another suggestion,

As an example contributor, It would be really nice to see a list of
functions that have no examples yet at a glance, so if I wanted to
work on adding examples I could go through a list and work on
functions that have no examples. I believe the clojure-examples
appspot wiki used to dim out functions that didn't have any examples
(I don't think it does this any more), which was very helpful.

If we did this, we could even have a percentage meter to work toward
100% API example coverage :)

- Lee

-- 
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: extend-protocol bug?

2010-07-16 Thread Stuart Halloway
This behavior is by design. 

(1) The absence of warning is consistent with proxy, reify, etc. You specify as 
much as you want, and there is no warning. This is very unlikely to change!

(2) The dynamism implied by a hypothetical append-partial-protocol seems high 
on complexity and low on value. But since it came up, maybe I'm wrong. Real 
motivating examples always welcome.

Stu

 It's better to illustrate this with simple example:
 
 If I'll define following protocol:
 
 (defprotocol test1
  (a1 [this] a1)
  (a2 [this] a2)
  (a3 [this] a3)
  )
 
 and then I can extend it with following constuction:
 
 (extend-protocol test1 String
 (a1 [this] (str Hello1  this !)))
 
 then I get no warning, that protocol test1 has 3 methods, and if I'll try
 to call corresponding, not defined methods, then I'll get
 
 (a2 bbb) -- method not defined
 
 and if I'll try to extend it further with following call
 
 (extend-protocol test1 String
 (a2 [this] (str Hello1  this !)))
 
 then a2 will defined, but a1 become undefined.
 
 May be we'll need either have a warning, that extend-protocol doesn't
 defines all necessary methods, or we'll need to allow to append methods,
 not defined earlier
 
 
 [AvataR]  at Fri, 16 Jul 2010 16:27:36 +0300 wrote:
 [ I have record J:Bot, protocol P:Bot
 [ and two files, one extend-protocol statement by file.
 [ After loading first file i get:
 [ http://pastebin.com/Kq5GZ6RJ
 [ After loading second file i get:
 [ http://pastebin.com/Pu3kHZ1h
 
 [ Looks like next extend-protocol rewrite :impls seg. How/where post the
 [ bug?
 
 [ Or myabe this is a feature? :]
 
 
 
 -- 
 With best wishes, Alex Ott, MBA
 http://alexott.blogspot.com/http://alexott.net/
 http://alexott-ru.blogspot.com/
 Skype: alex.ott
 

-- 
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 1.2 Beta 1

2010-07-16 Thread Stuart Halloway
Hi Stefan,

The behavior you are seeing is not a problem, and understanding why may be 
helpful to using agents correctly.

The thread that sends to an agent has no guarantee that it will (or will not) 
see the result of its action a tiny bit later, when the repl prints the 
stringified version of the agent.

If you want to guarantee that your thread sees the results of its own sends, 
you can call await. To be sure you were seeing a bug, you would need to 

(1) create an agent
(2) have no other threads sending to the agent
(3) send something that caused an error
(4) await

Your example is missing step 4. When I tried it with step 4 included, the 
behavior was reliable. Of course that doesn't prove that there isn't a bug... 
:-)

Stu

 Hi,
 
 I think I found a minor problem.  It appears with the error handling
 of agents and actually is just a minor glitch in the output.
 
 Consider the following session, copied from a terminal:
 
 shell java -cp clojure.jar clojure.main
 Clojure 1.2.0-beta1
 user= (def agt1 (agent One))
 #'user/agt1
 user= (defn upd-agt1 [current new-val]
   (if (= new-val fail)
 (throw (Exception. Update failed.))
  (str Update:  new-val)))
 #'user/upd-agt1
 user= (error-mode agt1)
 :fail
 user= (send agt1 upd-agt1 fail)
 #ag...@21ed5459 FAILED: One
 
 It creates an agent and causes an error in the update function.  The
 error mode of the agent is :fail and it silently fails when calling
 the action.  The failed status is visible from the printed output of
 the agent in the last line.  Further attempts to update the agent will
 raise an exception.
 
 Now for a second version see the following session, which started
 fresh. It does the same thing as the first session, but it makes sure
 that the thread-pool for the agents contains more threads, first.
 
 shell java -cp clojure.jar clojure.main
 Clojure 1.2.0-beta1
 ;; this just creates some threads in the pool
 user= (def agt2 (agent {:count 0}))
 #'user/agt2
 user= (defn agt2-action [state]
   (println In Thread (.getName (Thread/currentThread)))
   (if ( (:count state) 5)
 (do (send agt2 agt2-action)
 (assoc state :count (inc (:count state
  state))
 #'user/agt2-action
 user= (send agt2 agt2-action)
 In Thread pool-1-thread-1
 #ag...@4c6504bc: In Thread pool-1-thread-2
 In Thread pool-1-thread-3
 {:countIn Thread  pool-1-thread-4
 1}
 In Thread pool-1-thread-4
 user= In Thread pool-1-thread-4
 ;; now the same as before...
 user= (def agt1 (agent One))
 #'user/agt1
 user= (defn upd-agt1 [current new-val]
   (if (= new-val fail)
 (throw (Exception. Update failed.))
  (str Update:  new-val)))
 #'user/upd-agt1
 user= (error-mode agt1)
 :fail
 user= (send agt1 upd-agt1 fail)
 #ag...@7f11bfbc: One
 
 
 This time the output doesn't show the FAILED status of the agent.
 
 I am by no means sure that this change in behavior is related to the
 pool of threads.  I found it by accident and could reproduce it
 several times.
 
 Kind regards,
 Stefan
 
 -- 
 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

-- 
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 1.2 Beta 1

2010-07-16 Thread Cyrus Harmon
Going to http:// clojure.org, searching for git and following the Clojure goes 
git link would lead one to 
http://groups.google.com/group/clojure/msg/ca4fb58428052554 which suggests that 
the rickhickey page is the right one. Where's the announcement about 
git://github.com/clojure ?

thanks,

cyrus


On Jul 15, 2010, at 10:02 AM, Jeffrey Schwab wrote:

 On 7/15/10 10:15 AM, Adrian Cuthbertson wrote:
 Apparently there's a problem with git clone http://...
 
 Should be git clone git://github.com/clojure/clojure.git
 
 Sorry for the noise.
 
 Thanks, I've been mistakenly working from
 
  git://github.com/richhickey/clojure.git
 
 
 ...which is apparently why I didn't see any commits since June.
 
 -- 
 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

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


Implementing a protocol with using a base implementation?

2010-07-16 Thread tbatchelli
Hi all,

I am writing a network protocol handler based on events (to wrap
netty, if you're curious). I created a protocol that defines the
functions needed to handle every possible (channel) event:

(defprotocol channel-handler-strategy
  (message-received [this ctx evt])
  (exception-caught [this ctx evt])
  ...
  )

And I also provide a default event handler that will call the
appropriate handler function of the channel-handler-strategy protocol
depending on the type of event and some other data, for example:

(defrecord simple-channel-handler [strategy]
  channel-handler
  (handle-upstream [this ctx evt]
   (if (= ctx hello)
 (message-received strategy ctx evt)
 (exception-caught strategy ctx evt

 Note: this is toy code, the real code hasn't been written yet ;)

Here is the problem I am trying to solve: the list of handler
functions that the protocol will define is lng, and for most of
the cases, the developer will only want to perform some custom logic
in one or two of the handler functions, expecting that the rest of the
handler functions will perform some sort of default action (forward
the event in this case). If my understanding of the new type system in
1.2 is correct, there is no way create a record by extending another
record, nor a way to override functions of a record. Thus, with the
current tools, every channel-handler-strategy implementor would have
to provide a definition for *all* the functions defined in the
protocol.

I thought of some solutions, but I get the feeling I might just be
approaching the problem from the wrong angle.

1) The channel-handler-stategy implementor only implements the handler
functions he/she cares about, leaving the rest unimplemented. When the
event handler calls one of the unimplemented handler functions and
exception will be thrown,  and so the event handler can catch them and
execute the default behavior.

2) If there was a way to build a record from a map e.g: {fn-name fn-
definition}, then I'd be able to create a default handler function map
which the channel-handler-strategy implementors would merge with their
own custom maps that contained only the redefined handler functions,
and then use this merged map to create the record. I could not find
any existing way to do this but I believe it should be possible to
write a macro to do create a record from such map.

3) Use structs, but that would be too slow for my use case.

So here is the question: Am I approaching this problem the wrong way?
Or this use case for types is an only edge case and I should go ahead
and build a custom solution based on any of the above proposed
solutions?

Thanks in advance for your thoughts,

Toni.





-- 
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 1.2 Beta 1

2010-07-16 Thread Jeffrey Schwab

On 7/16/10 2:42 PM, Cyrus Harmon wrote:

Going to http:// clojure.org, searching for git and following the Clojure goes 
git link would lead one to 
http://groups.google.com/group/clojure/msg/ca4fb58428052554 which suggests that the 
rickhickey page is the right one. Where's the announcement about git://github.com/clojure 
?


  http://clojure.org/downloads

  Clojure source code is hosted at github.com/clojure/clojure.

I don't know whether there was any formal announcement.

--
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 1.2 Beta 1

2010-07-16 Thread Stefan Kamphausen
Hi,

FWIW...

I've delayed this work for ages, but now that 1.2 is just around the
corner I have no reason to wait any longer.  So I went through all [1]
examples from our forthcoming book [2] and tested them with the
current beta.  The result of this is encouraging: everything works
fine.

Until now I skipped most of the contrib library and the parts where we
show how to use Clojure stuff from Java.  Need something to do for the
weekend ;).

The only issues I had so far where when I tried to include
contrib.repl-utils and ns-utils which clash with other names in the
user-namespace and thus can't be safely included.  You can work around
this by :only importing what you need, though.

Kudos!

Hope this helps,
Stefan

[1] I looked at more than 400 verbatim environments in the LaTeX-
sources, containing almost 900 user-prompts and approximately 300
(defn\?-initions.
Mostly simple examples, but two larger programs, too, which comprise
one or two screen-pages of functions and give the CPUs something to
work on.

[2] http://www.clojure-buch.de (warning: self-ad, even more warning:
German content)

-- 
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: Implementing a protocol with using a base implementation?

2010-07-16 Thread Nicolas Oury
Not very clean suggestion.

Split the protocol in one protocol per function.

Instance every one on Object, with the default protocol.

Instance each specific on the function for which it has a special instance.

On Fri, Jul 16, 2010 at 7:45 PM, tbatchelli tbatche...@gmail.com wrote:

 Hi all,

 I am writing a network protocol handler based on events (to wrap
 netty, if you're curious). I created a protocol that defines the
 functions needed to handle every possible (channel) event:

 (defprotocol channel-handler-strategy
  (message-received [this ctx evt])
  (exception-caught [this ctx evt])
  ...
  )

 And I also provide a default event handler that will call the
 appropriate handler function of the channel-handler-strategy protocol
 depending on the type of event and some other data, for example:

 (defrecord simple-channel-handler [strategy]
  channel-handler
  (handle-upstream [this ctx evt]
   (if (= ctx hello)
 (message-received strategy ctx evt)
 (exception-caught strategy ctx evt

  Note: this is toy code, the real code hasn't been written yet ;)

 Here is the problem I am trying to solve: the list of handler
 functions that the protocol will define is lng, and for most of
 the cases, the developer will only want to perform some custom logic
 in one or two of the handler functions, expecting that the rest of the
 handler functions will perform some sort of default action (forward
 the event in this case). If my understanding of the new type system in
 1.2 is correct, there is no way create a record by extending another
 record, nor a way to override functions of a record. Thus, with the
 current tools, every channel-handler-strategy implementor would have
 to provide a definition for *all* the functions defined in the
 protocol.

 I thought of some solutions, but I get the feeling I might just be
 approaching the problem from the wrong angle.

 1) The channel-handler-stategy implementor only implements the handler
 functions he/she cares about, leaving the rest unimplemented. When the
 event handler calls one of the unimplemented handler functions and
 exception will be thrown,  and so the event handler can catch them and
 execute the default behavior.

 2) If there was a way to build a record from a map e.g: {fn-name fn-
 definition}, then I'd be able to create a default handler function map
 which the channel-handler-strategy implementors would merge with their
 own custom maps that contained only the redefined handler functions,
 and then use this merged map to create the record. I could not find
 any existing way to do this but I believe it should be possible to
 write a macro to do create a record from such map.

 3) Use structs, but that would be too slow for my use case.

 So here is the question: Am I approaching this problem the wrong way?
 Or this use case for types is an only edge case and I should go ahead
 and build a custom solution based on any of the above proposed
 solutions?

 Thanks in advance for your thoughts,

 Toni.





 --
 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.comclojure%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=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
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: Implementing a protocol with using a base implementation?

2010-07-16 Thread Nicolas Oury
I read my mail and couldn't understand it.

Here is what I meant:

(defprotocol MessageReceived
   (message-received ...))

(defprotocol ExceptionCaught
 .)

(extend Object MessageReceved {:message-received
default-message-received-function}...
)

(deftype channel-handler
  ExceptionCaught )
(not the lack of message received implementation)

-- 
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: Cljr and user.clj

2010-07-16 Thread liebke
Rick,

I think the problem is that additional classpaths are added,
dynamically, after the user.clj file is evaluated. It does get
evaluated if it's in ./ or ./src, which are added at launch in the
cljr scripts.

I have added ~/.cljr to the classpath defined in the launch scripts,
so you can place your user.clj there.

Thanks for catching that, I like to use user.clj too :-)

David



On Jul 16, 8:44 am, Rick Moynihan rick.moyni...@gmail.com wrote:
 I've just installed Cljr and am really impressed with it...  However I
 have run into a small problem.

 I'd like to have my cljr execute my user.clj at startup, however it
 seems that cljr is ignoring classpaths added with the command

 cljr add-classpath ~/.clojure/

 looking in ~/.cljr/project.clj I see that this has been added
 correctly, and that if I execute lein swank in the .cljr directory,
 lein correctly picks up the user.clj file on my classpath...
 indicating that there is a problem with cljr.

 Otherwise cljr is great...  Any help appreciated.

 R.

-- 
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 noob: refactoring factorial code

2010-07-16 Thread Mike Meyer
James Reeves jree...@weavejester.com wrote:

On 15 July 2010 16:24, Brisance cru...@gmail.com wrote:
 Thanks for the response.

 To get an idea of what I mean,  visit http://www.wolframalpha.com/''.
 Then enter something ridiculous (to me, at least) like 10!

 The answer is almost instantaneous.

Wolfram Alpha is merely approximating the result to a certain
precision. I highly doubt it's actually calculating the whole number
and then just stripping off the first N digits!

Stirlings approximation. The version I posted earlier used a form of it as 
well. There are also formulas for the other values Wolfram gives.
-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.

-- 
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: Implementing a protocol with using a base implementation?

2010-07-16 Thread Toni Batchelli
Hi Nicolas,

I get the idea, but I don't see how this would help provide a default
implementation for the functions inside a protocol. It looks to me
like this would be the same as creating a record with only some of the
functions implemented. Or am I reading it wrong?

Thanks for your input.

Toni.

On Fri, Jul 16, 2010 at 1:21 PM, Nicolas Oury nicolas.o...@gmail.com wrote:
 I read my mail and couldn't understand it.
 Here is what I meant:
 (defprotocol MessageReceived
    (message-received ...))
 (defprotocol ExceptionCaught
  .)
 (extend Object MessageReceved {:message-received
 default-message-received-function}...
 )
 (deftype channel-handler
   ExceptionCaught )
 (not the lack of message received implementation)

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



-- 
Antoni Batchelli
- twitter: @tbatchelli , @disclojure
--- email: tbatche...@gmail.com
- web: tbatchelli.org , disclojure.org

-- 
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: ClojureDocs.org

2010-07-16 Thread Daniel Werner
Hi Zack,

I just take a quick look at your site and must say that I'm impressed.
This is going to become one of the utilities I constantly keep open in
the background while developing. Especially since features like the
Var cross-referencing tend to make easier to get the big picture.

One thing I immediately wanted to do is browse the Enlive docs to
learn about the templating code, but couldn't simply search for
Enlive -- I had to either click the (less-visible) All libraries
link or search for a known Var like defsnippet. A project search
feature, or a unified search that will search in Vars as well project
names, would be really helpful.

Thanks for investing your time into this site. May it prosper and
attract many prospective new Clojure developers :-)

-Daniel

-- 
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: defmulti - defonce semantics?

2010-07-16 Thread Pedro Henriques dos Santos Teixeira
On Fri, Jul 16, 2010 at 6:20 PM, Kevin Downey redc...@gmail.com wrote:
 use of immigrate is unhygienic and a problem to be solved before you
 go looking for others


didn't realize it before. I already started to remove it from code,
and declaring all :uses explicitly.

thanks for the reply.

-- 
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: Function called from macro loses record structure

2010-07-16 Thread Michał Marczyk
This is an instance of the broader issue whereby records currently
evaluate to maps. There was a ticket open for that on Assembla. I'm
not sure what's the current status on that, but whenever it gets
fixed, macros will be able to use records in their expansions.

Sincerely,
Michał

-- 
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: ClojureDocs.org

2010-07-16 Thread Avram
A few thoughts... It might be interesting to allow examples to be
rated.  Quality or usefulness of the provided example could then be
inferred from the rating and highly rated examples could bubble to the
top or have the associated rating prominently shown.
~A


On Jul 16, 10:29 am, Lee Hinman matthew.hin...@gmail.com wrote:
 Had another suggestion,

 As an example contributor, It would be really nice to see a list of
 functions that have no examples yet at a glance, so if I wanted to
 work on adding examples I could go through a list and work on
 functions that have no examples. I believe the clojure-examples
 appspot wiki used to dim out functions that didn't have any examples
 (I don't think it does this any more), which was very helpful.

 If we did this, we could even have a percentage meter to work toward
 100% API example coverage :)

 - Lee

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


A functional, efficient, convolution function. Is imperitive-style the answer?

2010-07-16 Thread Isaac Hodes
I posted this on StackOverflow yesterday, but to no avail: I don't
think many people looked at it, or least I didn't get much feedback.

I am trying to create a lazy/functional/efficient/Clojuresque function
to carry out convolution on two lists/vectors of (ideally BigDecimals
but that may be inefficient) doubles.

It is turning out to be very difficult. I have four or five versions
in my buffer right now, and none of them are acceptable. I've even
tried a number of versions using into-array etc, e.g. mutables.

Instead of posting a lot of links to pastie, I'm just copying the SO
link here, where my code and the algorithms can be found.

Right now, it seems as though this is something Clojure cannot do.
David Nolen mentioned that the appropriate Java-interop functionality
may come in Clojure 1.3, but aside from eschewing the functional style
by using arrays, it seems as though there should be a better answer.
(As an aside, where can I find out about 1.3?)

I have a Python implementation to show how nicely it can be expressed
in an imperitive language (though I suppose I dabbled in the
functional style initializing my return array).

Is it possible to do this, and do it well?

Thank you so much, in advance.

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


Question on namespace/packages of defrecord

2010-07-16 Thread Eric Thorsen
Congrats on the 1.2 beta guys!

When I AOT a defrecord it does not javaize the clojure namespace into
a proper java package name.
(ns this-that)

(defrecord Fred [])

;creates a class file
this-that.Fred.class
Is this by design?  What is the thinking here?

Thanks,
Eric

-- 
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: A functional, efficient, convolution function. Is imperitive-style the answer?

2010-07-16 Thread Frederick Polgardy
Where's the link? :)

-Fred

--
Science answers questions; philosophy questions answers.

On Jul 16, 2010, at 2:57 PM, Isaac Hodes wrote:

 I posted this on StackOverflow yesterday, but to no avail: I don't
 think many people looked at it, or least I didn't get much feedback.
 
 I am trying to create a lazy/functional/efficient/Clojuresque function
 to carry out convolution on two lists/vectors of (ideally BigDecimals
 but that may be inefficient) doubles.
 
 It is turning out to be very difficult. I have four or five versions
 in my buffer right now, and none of them are acceptable. I've even
 tried a number of versions using into-array etc, e.g. mutables.
 
 Instead of posting a lot of links to pastie, I'm just copying the SO
 link here, where my code and the algorithms can be found.
 
 Right now, it seems as though this is something Clojure cannot do.
 David Nolen mentioned that the appropriate Java-interop functionality
 may come in Clojure 1.3, but aside from eschewing the functional style
 by using arrays, it seems as though there should be a better answer.
 (As an aside, where can I find out about 1.3?)
 
 I have a Python implementation to show how nicely it can be expressed
 in an imperitive language (though I suppose I dabbled in the
 functional style initializing my return array).
 
 Is it possible to do this, and do it well?
 
 Thank you so much, in advance.
 
 -- 
 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

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