Ah, if only some one had implemented one.

I guess there is no reason NOT to implement this? It's still only a
single class, and single object per function? The class is going to be
longer, because method bodies like...

public Object invoke(Object arg1, Object arg2) {
        return throwArity(2);
}

will get overridden with implementation, so I guess it *might* slow
start up time, and an AOT jar will get bigger.

So, the question is, did it just get forgotten or is it harder than it
looks?

Phil


Andy Fingerhut <andy.finger...@gmail.com> writes:

> http://dev.clojure.org/jira/browse/CLJ-731 ?
>
> On Tue, Oct 28, 2014 at 2:39 AM, Phillip Lord <phillip.l...@newcastle.ac.uk>
> wrote:
>
>> Reid McKenzie <rmckenzi...@gmail.com> writes:
>> > This suggests that |apply| is immensely expensive in general,
>> > and that such arity unrolling even for trivial functions would be a good
>> > thing. Albeit hard to build.
>>
>>
>> Wonder whether it is macroable. Something like
>>
>>
>> (def new-function
>>   (with-arities [20]
>>      [args]
>>      (blah args)
>>      [args & rest]
>>      (apply args rest)))
>>
>>
>> which gets replaced with
>>
>>   (fn
>>     ([]
>>      (blah))
>>     ([a]
>>      (blah a))
>>     ;;...etc
>>     ([a...t]
>>      (blah a...t))
>>     ([a...t & rest]
>>      (apply blah a...t rest)))
>>
>>
>> Where a...t are the symbols a to t. Would this help? The function blah,
>> of course, would know what it's arity is, but this is true for most
>> higher-order functions (if functions returned their arities, I guess you
>> could work around this, but they don't).
>>
>> So, partial would become something like...
>>
>> (def partial
>>   (with-arities [:all]
>>     [args]
>>     (fn [args] (args))
>>     [args & rest]
>>     (fn [& rst] (apply (list* args rst)))))
>>
>>
>> Just thinking aloud!
>>
>> Phil
>>
>> --
>> 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 unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>

-- 
Phillip Lord,                           Phone: +44 (0) 191 222 7827
Lecturer in Bioinformatics,             Email: phillip.l...@newcastle.ac.uk
School of Computing Science,            
http://homepages.cs.ncl.ac.uk/phillip.lord
Room 914 Claremont Tower,               skype: russet_apples
Newcastle University,                   twitter: phillord
NE1 7RU                                 

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to