Re: Incorrect behaviour for large s-expressions :(

2010-11-15 Thread Alessio Stalla
On 15 Nov, 19:34, Brian Goslinga wrote: > Well, assuming the memory is available, at least Clojure is guaranteed > to support vectors with more than 1024 elements... Unfair comparison. Clojure is not a standard, it's an implementation. SBCL is guaranteed to support vectors with >> 1024 elements t

Re: Incorrect behaviour for large s-expressions :(

2010-11-15 Thread Alyssa Kwan
I'm building an ETL app, so aggregate functions of arbitrarily large arity is a necessity. I've had to wrap a lot of core clojure functions with concrete arg lists to make them work with lazy sequences. In my limited experience, machine generated code of this nature should use lazy sequences that

Re: Incorrect behaviour for large s-expressions :(

2010-11-15 Thread Brian Goslinga
On Nov 13, 11:48 pm, Robert McIntyre wrote: > So my friend and I were screwing around, battling versions of LISP as > nerds are wont to do, when I came across this: > > (eval `(clojure.core/+ ~@(take 1e4 (iterate inc 1 > Invalid method Code length 89884 in class file user$eval13607 > > This is

Re: Incorrect behaviour for large s-expressions :(

2010-11-15 Thread Alessio Stalla
On Nov 14, 6:48 am, Robert McIntyre wrote: > So my friend and I were screwing around, battling versions of LISP as > nerds are wont to do, when I came across this: > > (eval `(clojure.core/+ ~@(take 1e4 (iterate inc 1 > Invalid method Code length 89884 in class file user$eval13607 > > This is

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread David Nolen
On Sun, Nov 14, 2010 at 4:21 PM, Robert McIntyre wrote: > That is not in fact an adequate workaround --- > > (eval `(apply + ~@(take 9001 (iterate inc 1 ;; OVER 9000!!! > > or, alternately > > (eval (cons 'apply (cons '+ (take 9001 (iterate inc 1) > > will fail just as in the addition ex

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Lee Spector
On Nov 14, 2010, at 4:21 PM, Robert McIntyre wrote: > It's not true that you can just use an apply in your auto generated > code, you would instead have to do something like a tree of function > calls, so It may be worth increasing the limit for for the sake of > enabling machine generated code. >

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Robert McIntyre
That is not in fact an adequate workaround --- (eval `(apply + ~@(take 9001 (iterate inc 1 ;; OVER 9000!!! or, alternately (eval (cons 'apply (cons '+ (take 9001 (iterate inc 1) will fail just as in the addition examples. It's not true that you can just use an apply in your auto gener

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Mike Meyer
On Sun, 14 Nov 2010 08:43:11 -0500 Robert McIntyre wrote: > @Mike Meyer > Using apply is different than what I'm doing. Yup. > When I use eval I'm trying to evaluate a huge s-expression. > When you use apply you're evaluating a s-expression with three > elements. Same thing with the count form (

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread nicolas.o...@gmail.com
> I believe the underlying problem is a limit of the JVM.  Maybe it > would be possible for the Clojure compiler to work around the > limitation, though. It has a non trivial interaction with the lack of TCO. The trivial transformation of going from a big method to a sequence of small methods coul

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Michael Wood
On 14 November 2010 15:43, Robert McIntyre wrote: > @Nicolas Oury > I'd normally agree that "you just shouldn't do that kind of thing," > but this is not correct behaviour for something that I would consider > a basic thing.  It feels dirty that our functions don't work for > "arbitrary arities"  

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Robert McIntyre
@Nicolas Oury I'd normally agree that "you just shouldn't do that kind of thing," but this is not correct behaviour for something that I would consider a basic thing. It feels dirty that our functions don't work for "arbitrary arities" but instead for arities only between 0 and around 7000. Sinc

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread Mike Meyer
On Sun, 14 Nov 2010 00:48:13 -0500 Robert McIntyre wrote: > So my friend and I were screwing around, battling versions of LISP as > nerds are wont to do, when I came across this: > > (eval `(clojure.core/+ ~@(take 1e4 (iterate inc 1 > Invalid method Code length 89884 in class file user$eval1

Re: Incorrect behaviour for large s-expressions :(

2010-11-14 Thread nicolas.o...@gmail.com
JVMs has a strange limitation for the size of methods. I don't know if there is a plan to solve that on the JVM side. It is quite hard to solve that on the compiler side. When I bumped inot this (once for an ICFP contest), I rewrote a macro so that it emitted smaller methods called from a big meth

Incorrect behaviour for large s-expressions :(

2010-11-13 Thread Robert McIntyre
So my friend and I were screwing around, battling versions of LISP as nerds are wont to do, when I came across this: (eval `(clojure.core/+ ~@(take 1e4 (iterate inc 1 Invalid method Code length 89884 in class file user$eval13607 This is just trying to evaluate + directly on a bunch of argume